在我的评论后面,考虑类似于以下内容:
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
for row in reader:
print(row)
输出结果:
OrderedDict([('#ID','1978'),('#Number','26'),('#Date','24/4/10'),('#Name','Jim'),('#Email','Jim@randomemail.com')])
OrderedDict([('#ID','1328'),('#Number','31'),('#Date','22/7/10'),('#Name','Jim'),('#Email','Kim@randomemail.com')])
OrderedDict([('#ID','1908'),('#Number','26'),('#Date','21/4/10'),('#Name','Jim'),('#Email','Dim@randomemail.com')])
OrderedDict([('#ID','1918'),('#Number','26'),('#Date','29/4/10'),('#Name','Jim'),('#Email','Rim@randomemail.com')])
OrderedDict([('#ID','1938'),('#Number','46'),('#Date','24/4/10'),('#Name','Jim'),('#Email','Lim@randomemail.com')])
DictReader
中的两个额外参数是为了使您的变量空格分隔的文件正确解析。
或者,如果您想一次获取所有行,请使用以下代码:
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
rows = list(reader)
print(rows)
生成
[
OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')]),
OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')]),
OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')]),
OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')]),
OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')])
]
和,
print(rows[0]["#Email"])
产生
Jim@randomemail.com
更新
如果您的文件实际上是以 制表符 作为分隔符,您可以使用以下方法:
reader = csv.DictReader(f, delimiter='\t')
你应该通过打印行(就像你已经做过的那样)来确定分隔符,但要将其包装在repr调用中,例如print(repr(line))。如果在输出中看到\t,则表示它是以制表符分隔的。
csv.DictReader
吗? - jedwards