0

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

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 

有人可以帮我弄这个吗?

4

2 回答 2

2

您可能有一个制表符分隔的文件。使用csv模块阅读:

import csv

with open('somefilename.csv', 'rb') as inputfile:
    for row in csv.reader(inputfile, delimiter='\t'):
        print ' | '.join(row)
于 2013-03-11T10:10:16.697 回答
0

假设您不能/不会更新源文件,您可能无法使用正则表达式来解析这些行。对于您给出的输入,这将起作用(假设“行”包含您的行):

>>> 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
于 2013-03-11T10:28:07.733 回答