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

2024-09-28 20:56:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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 

有人能帮我吗?你知道吗


Tags: 文件city列表文本文件stormlindhicamaxi
2条回答

假设您不能/不会更新源文件,您可能无法使用regex来解析行。对于您提供的输入,这将起作用(假设“行”包含您的行):

>>> 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

您可能有一个制表符分隔的文件。使用^{} module阅读:

import csv

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

相关问题 更多 >