2016-05-31 43 views
-2

列表我怎樣才能解開下面的列表開箱元組

[('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]) 

但是,這似乎是在內存中返回一個點,因爲我收到一個錯誤我無法打開陣列說明這是不可取的。

感謝

更新: 分配text_good的

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:當我做text_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_good [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')] 

當我做text_good [0]時注意額外的括號。

+3

這不是一個列表。它可能是兩個列表,或者一個字符串或其他東西,或者當您發佈文本時,您可能會將文本搞亂。 – user2357112

+1

你想在這個操作之後有'Part','Title'和'Page'是什麼? – user2357112

+0

我很確定它是一個在每個索引處都有一個元組的列表。當我列出[0]時,我得到[[('1','GENERAL','1'),('1.1','RELATED DOCUMENTS','1'),('1。2','PROJECT DESCRIPTION','1'),('1.3','OWNER','1'),('1.4','ARCHITECT/ENGINEER','2'),('1.5','PURCHASE ('1.6','所有者提供的物品','2'),('1.7','承包商提供的物品','3'),('1.8','承包商使用('''','所有者佔用','3'),('1.10','工作限制','4')]]。我想最終的結果是3個單獨的列表,每個列表都有每個元組的值。 – Jstuff

回答

2

好吧,我想我們首先需要在這裏做一點澄清。我在完全名單是什麼,所以我會做如下假設(如果這些假設都錯了,請讓我知道這樣我就可以解決這些問題)有點糊塗:

text_good = [[('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')]] 

現在在哪裏,如果我做text_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_good[1]是:

[('2', 'PRODUCTS - NOT APPLICABLE', '10')] 

對我來說,這似乎是你有一個元組的列表,其中('1', 'GENERAL', '1')將按照該順序對應於Part, Title, Page

那麼,如果這是你需要可以做這樣的事情的情況下:

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有list of lists of lists of tuples,我們技術上需要3個循環才能提取他想要的定義。

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

這正是我所需要的,但它並不完全工作,因爲我的列表text_good包含多個列表,這正是我試圖用[[('2','PRODUCTS - NOT APPLICABLE','10']]]在您的解決方案中使用的列表下方。當我做零件,標題,頁面= zip(* text_good)時,我得到錯誤ValueError:沒有足夠的值解包(預計3,得到1)。注意:text_good目前包含3個列表。如果我嘗試Part,Title,Page = zip(* text_good [0]),我會得到錯誤值ValueError:解壓縮的值太多(預期爲3)。這有幫助嗎?我可以進一步澄清任何事情。我在python 3 – Jstuff

+0

@Jstuff你可以複製/粘貼'text_good'的作業 – ZWiki

+0

這可能會令人困惑,但 我在範圍內(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] )) – Jstuff