2014-07-18 64 views
1

所以我有一個製表符分隔文本文件中像如下:的Python:基於相同的元素分組多個列表

23  Hello How are you? 
23  What's up? 
24  I am using Python 

我想單獨和組以上數據,以便它看起來像這樣:

23  Hello How are you? What's up? 
24  I am using Python 

基本上我想組與所述第一列的相同值的文本(和然後將它們寫入到23.txt的單獨的文本文件和24.txt)

我的代碼如下寫爲:

def data_extraction(inputfile): 

ifile = open(inputfile, "r") 
lines = ifile.readlines() 


for value in lines: 
    each_line = value.split('\t') 
    service_order = each_line[0] 
    text = each_line[-1] 

以上將給出for循環中的多個列表(value = ['23','Hello,你好嗎?'等等))。我需要做什麼將同一列和相應的文本分組?任何幫助將不勝感激。

+0

該文件是否在第一列上排序? –

+0

它未分類。第一列是隨機數字。他們實際上是我正在處理的原始文件中的訂單號。 – user1452759

回答

2
>>> data = """23\tHello How are you? 
23\tWhat's up? 
24\tI am using Python""" 
>>> new_dict = defaultdict(str) 
>>> data = data.split('\n') 
>>> for line in data: 
    each_line = line.split('\t') 
    new_dict[int(each_line[0])] += " " + each_line[-1] 

>>> print new_dict 
defaultdict(<type 'str'>, {24: ' I am using Python', 23: " Hello How are you? What's up?"}) 

輸出 -

>>> for key in sorted(new_dict): 
    print str(key) + "\t" + new_dict[key].strip() 


23 Hello How are you? What's up? 
24 I am using Python 

你也不應使用readlines和讀取一行由一個人在閱讀文件時使用上下文。

with open('filename', 'r') as f: 
    for line in f: 
     # Use the above code 
+0

如果您使用附加字符串您需要使用默認字典。你可以使用普通字典:) –

+0

這樣我第一次得到一個空字符串。儘管我可以用'dict.get'來做同樣的事情。 –

+0

非常感謝!這工作:) – user1452759

2
ifile = open(inputfile, "r") 

linedic=defaultdict(list,{}) 

for line in ifile: 
    line=line.split(None,1) 
    linedic[line[0].strip()].append(line[1].strip()) 
    #linedic[line[0].strip()]+=" "+line[1].strip() 

你爲這個鍵爲行號和值是文本默認字典

+0

你也可以'line.split(None,1)'來確定,你只能拆分一次。 –

相關問題