擅长:python、mysql、java
<p>问题出在<code>delimiter</code>和调用<code>writerow()</code>的参数中。<code>csv</code>模块已经为您处理了列的定界,因此您不需要使用<code>','.join(row)</code>格式化行。代码中发生的事情是将字符串<code>'2017-03-07,36939142'</code>传递到函数<code>writerow()</code>,该函数需要一个列表(如@JordanSinger所述)。然后它将字符串转换成一个列表,这个列表变成<code>['2', '0', '1', '7', '-', etc]</code>。然后定界符是一个<code>'\t'</code>,因此csv编写器获取从<code>','.join(row)</code>创建的字符串的每个字符,并在每个字符之间放置一个制表符(好像每个字符都是自己的列,由制表符分隔)。因此,您需要更改分隔符以及将函数调用更改为<code>writerow</code>以传递列表,而不是字符串。你知道吗</p>
<p>另外,您可以通过将字典解压成<code>(key, value)</code>对元组而不是遍历键来减少代码。你知道吗</p>
<pre><code>dic = {'2017-03-07': '36939142', '2014-02-19': '13193909'}
with open(datafile, 'w', newline='', encoding='utf8') as csvfile:
datawriter = csv.writer(csvfile, delimiter=',')
for date,order_number in dic.items():
datawriter.writerow([date,order_number])
</code></pre>
<p>输出:</p>
<pre><code>2017-03-07,36939142
2014-02-19,13193909
</code></pre>