<p>在我的评论之后,请考虑以下内容:</p>
<pre><code>import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
for row in reader:
print(row)
</code></pre>
<p>输出:</p>
<pre>
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')])
</pre>
<p><code>DictReader</code>的两个额外参数是正确解析变量空间分隔文件所必需的。你知道吗</p>
<p>或者,如果要同时显示所有行,则可以执行以下操作:</p>
<pre><code>import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
rows = list(reader)
print(rows)
</code></pre>
<p>产生</p>
<pre>
[
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')])
]
</pre>
<p>而且</p>
<pre><code>print(rows[0]["#Email"])
</code></pre>
<p>产生</p>
<pre>
Jim@randomemail.com
</pre>
<p><strong>更新</p>
<p>如果文件实际上是<em>制表符</em>分隔的,则可以使用:</p>
<pre><code>reader = csv.DictReader(f, delimiter='\t')
</code></pre>
<p>您应该能够通过打印行(正如您已经拥有的那样)来判断分隔符是什么,但是将它包装在一个<code>repr</code>调用中,比如<code>print(repr(line))</code>。如果您在输出中看到一个<code>\t</code>,它是以制表符分隔的。你知道吗</p>