Python 解包元组列表

Python 解包元组列表,python,list,tuples,Python,List,Tuples,如何打开以下列表 [('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3')

如何打开以下列表

[('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3'), ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'), ('1.8', 'PROJECT MEETINGS', '6')]
[[('2', 'PRODUCTS – NOT APPLICABLE', '10')]]
从另一个帖子上的解决方案我试过了

Part, Title, Page = zip(*text_good[0])
但是我犯了错误

 too many values to unpack (expected 3)
我也试过了

Part1[a].append(Part for Part, Title, Page in text_good[0])
Part2[a].append(Part for Part, Title, Page in text_good[1])
Part3[a].append(Part for Part, Title, Page in text_good[2])
但这似乎返回了内存中的一个点,我无法打开数组,因为我收到一个错误,说明它不可拾取

谢谢

更新: 课文分配很好

for i in range(0, len(text_between_parts)):
    text_good[i].append(re.findall(r'\s*(\b\d+(?:[.]\d+)?)\W+\s*(.*?)\s*(\b\d+\b)', text_between_parts[i]))
更新2:当我做了文本处理[0]时,我得到

[[('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3'), ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'), ('1.8', 'PROJECT MEETINGS', '6')]]
[('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3'), ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'), ('1.8', 'PROJECT MEETINGS', '6')]
当我发短信时[0][0]我会

[[('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3'), ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'), ('1.8', 'PROJECT MEETINGS', '6')]]
[('1', 'GENERAL', '1'), ('1.1', 'RELATED DOCUMENTS', '1'), ('1.2', 'SUMMARY', '1'), ('1.3', 'DEFINITIONS', '1'), ('1.4', 'INFORMATIONAL SUBMITTALS', '2'), ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'), ('1.6', 'COORDINATION DRAWINGS', '3'), ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'), ('1.8', 'PROJECT MEETINGS', '6')]

请注意,我在执行text_good[0]时使用了额外的括号

好的,我想我们需要先做一点澄清。我对列表的确切内容有点困惑,因此我将做出以下假设(如果这些假设中有任何一个是错误的,请让我知道,以便我可以修复它们):

现在如果我做了
text\u good[0]
我会得到:

[('1', 'GENERAL', '1'),
 ('1.1', 'RELATED DOCUMENTS', '1'),
 ('1.2', 'SUMMARY', '1'),
 ('1.3', 'DEFINITIONS', '1'),
 ('1.4', 'INFORMATIONAL SUBMITTALS', '2'),
 ('1.5', 'GENERAL COORDINATION PROCEDURES', '2'),
 ('1.6', 'COORDINATION DRAWINGS', '3'),
 ('1.7', 'REQUESTS FOR INFORMATION (RFIs)', '4'),
 ('1.8', 'PROJECT MEETINGS', '6')]
text\u good[1]
将是:

[('2', 'PRODUCTS - NOT APPLICABLE', '10')]   
在我看来,这似乎是一个元组列表,
('1','GENERAL','1')
将按照该顺序对应于
部分、标题、页面

如果是这种情况,您可以这样做:

Parts, Title, Page = zip(*[t for l in text_good for t in l])
在这种情况下,您会得到:

print Parts # ('1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6', '1.7', '1.8', '2')
print Title # ('GENERAL',
            # 'RELATED DOCUMENTS',
            # 'SUMMARY',
            # 'DEFINITIONS',
            # 'INFORMATIONAL SUBMITTALS',
            # 'GENERAL COORDINATION PROCEDURES',
            # 'COORDINATION DRAWINGS',
            # 'REQUESTS FOR INFORMATION (RFIs)',
            # 'PROJECT MEETINGS',
            # 'PRODUCTS - NOT APPLICABLE')

print Page # ('1', '1', '1', '1', '2', '2', '3', '4', '6', '10')
最终编辑: 因为@JStuff有一个元组列表的
列表,我们技术上需要3个for循环来提取他想要的定义

Parts, Title, Page = [t for l in text_good for ll in l for t in ll] # Yay for list comprehension?

这不是一个清单。它可能是两个列表,或一个字符串或其他东西,或者您在发布它时可能只是把文本弄乱了。您希望
部分
标题
,以及
页面
在这个操作之后是什么?我很确定它是一个在每个索引处都有一个元组的列表。当我列出[0]时,我得到了[[('1','GENERAL','1'),('1.1','RELATED DOCUMENTS','1'),('1.2','PROJECT DESCRIPTION','1'),('1.3','OWNER','1'),('1.4','ARCHITECT/ENGINEER','2'),('1.6','OWNER-Provided ITEMS','2'),('1.7','CONTRACTOR-Provided ITEMS','3'),('1.8','CONTRACTOR Usage OF PREMISES','3'),('1.9'、'OWNER Occupation'、'3')、('1.10'、'WORK RESTRICTIONS'、'4')])。我希望最终结果是3个单独的列表,每个列表都有一个元组的值。事实上,初始列表在我看来似乎是错误的……否则,您可以在l中对VAL使用res=[dict(zip(['Part','Title','Page'],VAL])这与您发布的内容在结构和内容上都完全不同。如果您无法提供数据外观的连贯描述,我们无法帮助您处理数据。这正是我所需要的,但它不太有效,因为我的列表文本包含多个列表,这正是我试图传达的内容[[('2','PRODUCTS–NOT Applieve','10')]]位于您在解决方案中使用的列表下方。当我执行Part,Title,Page=zip(*text\u good)时,我得到错误值error:没有足够的值来解包(预期为3,得到1)。注意:text\u good当前包含3个列表。如果我尝试Part,Title,Page=zip(*text\u good[0])我得到一个错误ValueError:太多的值需要解包(预期为3)。这有帮助吗?我可以进一步澄清任何事情。我是python的3@Jstuff你能复制/粘贴
text\u good
的赋值吗这可能会让人困惑,但对于范围(0,len(部分之间的text\u)):text\u good[i]。append(re.findall(r'\s*(\b\d+(?:[.]\d+)\W+\s*(.*)\s*(\b\d+\b)”,text_-between-u-parts[i])@ZWiki在原始帖子中以更可读的方式发布了它。len(text_-between-u-parts)将等于3,因此text_-good将创建3个元组列表。这说明了更多事情吗?@Jstuff我刚刚更新了我的答案,接受了一个
元组列表
,这正是我认为你想要的