2014-07-18 66 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)'来确定,你只能拆分一次。 –

相关问题