在python中导入和排序文本文件

时间:2013-03-11 10:06:13

标签: python list text-files

我有一个看起来像这样的文本文件:

2013-03-10   Maxi Ica Storm Lindh -805,42  3 326,22 
2013-03-07   Hemk P Matgl Dje -86,80  4 131,64 
2013-03-06   Hemk P Sthlm City -238,30  4 218,44 
2013-03-04   Hemk P Matgl Dje -150,91  4 456,74 
2013-03-02   Lidl 257 / Sthlm Sveav -174,00  4 607,65 

我想将这个文件导入python到列表中,所有行都存储起来,并且这些行分开如下:

2013-03-10  | Maxi Ica Storm Lindh | -805,42 | 3 326,22 

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

您可能有一个制表符分隔的文件。使用csv module来读取:

import csv

with open('somefilename.csv', 'rb') as inputfile:
    for row in csv.reader(inputfile, delimiter='\t'):
        print ' | '.join(row)

答案 1 :(得分:0)

假设您不能/不会更新源文件,您可能无法使用正则表达式解析行。对于你给出的输入,这将起作用(假设'lines'保存你的行):

>>> import re
>>> matcher = re.compile(r'^(\d{4}-\d{2}.\d{2})\s+(.+) (-?[\d ]+,\d{2})\s+(-?[\d, ]+)$')
>>> formatted_lines = ["|".join(m.groups()) for m in [matcher.match(line) for line in lines]]
>>> for line in formatted_lines:
...     print(line)
...
2013-03-10|Maxi Ica Storm Lindh|-805,42|3 326,22
2013-03-07|Hemk P Matgl Dje|-86,80|4 131,64
2013-03-06|Hemk P Sthlm City|-238,30|4 218,44
2013-03-04|Hemk P Matgl Dje|-150,91|4 456,74
2013-03-02|Lidl 257 / Sthlm Sveav|-174,00|4 607,65