<p>您可以先用<code>csvfile.readline()</code>读取文件中的第一行,然后再将其发送给csv阅读器。这会将文件描述符推进到第二行(可以用<code>csvfile.tell()</code>检查位置),因此应该在输出中省略头。在</p>
<pre><code>csvfile.readline()
reader = csv.DictReader(csvfile, fieldnames)
</code></pre>
<h2>更新:</h2>
<p>正如我在评论中提到的,您的输入数据有一个问题:没有明显的分隔符,它标记了列之间的边界(至少在您发布的数据中-只有空格)。如果使用逗号作为分隔符,则一切顺利:</p>
<h3>数据:</h3>
^{pr2}$
<h3>代码:</h3>
<pre><code>import csv, json
csvfile = open('testdata.csv', 'rU')
jsonfile = open('testdata.json', 'w')
reader = csv.DictReader(csvfile)
for row in reader:
json.dump({ row['Matric'] : (row['Name'], row['Department'], row['Status']) }, jsonfile)
jsonfile.write('\n')
</code></pre>
<h3>输出:</h3>
<pre><code>{"2010CS01": ["Jones Doe", "Computer Science", "Paid"]}
{"2010CS02": ["James Rug", "Computer Science", "Paid"]}
{"2010AC01": ["Curtis Payne", "Accounting", "Unpaid"]}
</code></pre>
<p>与其他注释一样,预期的输出不是有效的JSon。输出就是这个。在</p>
<h2>转换输入数据</h2>
<p>假设您的输入数据实际上是由制表符分隔的,当您在这里发布这些数据时,这些制表符已转换为空格,那么在分析csv时,您只需指定制表符作为分隔符:</p>
<pre><code>reader = csv.DictReader(csvfile, delimiter='\t')
</code></pre>
<p>如果您的输入数据实际上只有空格,您可以使用简单的sed将多个空格转换为逗号:</p>
<pre><code>sed -e 's/\ \{2,\}/,/g' -i testdata.csv
</code></pre>
<p>不能保证这会起作用-如果你的数据字段中有多个空格,它会把事情搞砸。在</p>