<p>我建议您不要手动解析CSV文件,而是使用内置的<a href="http://docs.python.org/dev/library/csv.html" rel="nofollow noreferrer">csv</a>。它处理分隔符、字符转义等。它的API也很简单:</p>
<pre><code>import csv
# Auto-detector of this particular CSV dialect (delimiters and such)
dialect = csv.Sniffer().sniff(open('one.csv').read())
# csv.reader yields every row found in the file using the given dialect
rows = csv.reader(open('one.csv'), dialect = dialect)
# [list comprehension][2]
resulting_dict = dict((row[0], row[1:]) for row in rows)
</code></pre>
<p>您可以将代码重构为一个函数,并将其用于两个文件(不过,从内存进行编码,请小心出错)。在</p>
<p>现在有两个dict分别对应两个文件,比如<code>dict1</code>和{<cd2>},可以将它们组合起来:</p>
^{pr2}$
<p>将其写入.csv文件也很简单:</p>
<pre><code>writer = csv.writer(open('second.csv', 'w'), delimiter = '\t')
for key, values in combined_dict:
writer.writerow(key, *values)
</code></pre>
<p>一定要查看<a href="http://docs.python.org/dev/library/csv.html" rel="nofollow noreferrer">docs</a>以获得更详细的参考。在</p>
<p><strong>编辑:</strong>我的解决方案没有考虑行顺序(dict是无序的)。有两种解决方案:</p>
<ul>
<li>如果运行的是Python3或Python2.7,请使用集合.OrderedDict在</li>
<li>否则,您需要存储行的顺序-例如,在读取第二个文件时,将列表理解分解为标准的<code>for</code>语句,并将标题存储在列表中。在</li>
</ul>