<p>您似乎正在运行Python 3.x.<em>有关对csv文件使用二进制模式的建议适用于Python 2.x.</em>3.x不需要codec模块--打开文件时只需使用<code>encoding=whatever</code>。<em>3.x需要的是用</em><code>newline=''</code>打开文件。这适用于读和写,尽管它没有被记录下来(错误报告已经提交)。在解决了您的双圈间距问题后,这将起作用:</p>
<pre><code>import csv
data = [
['\xfforick', 123.456],
['polonius', 987.564],
]
with open('demo.csv', 'w', newline='', encoding='utf8') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
</code></pre>
<p>输出文件的内容:</p>
<pre><code>>>> open('demo.csv', 'rb').read()
b'\xc3\xbforick,123.456\r\npolonius,987.564\r\n'
>>>
</code></pre>
<p>建议:考虑一下代码的易读性。。。而不是</p>
<pre><code>for i in range(self.ui.table.rowCount()):
rowData = [self.ui.table.item(i,0).text().encode('utf-8')\
,self.ui.table.item(i,1).text().encode('utf-8')\
,self.ui.table.item(i,2).text().encode('utf-8')\
,self.ui.table.item(i,3).text().encode('utf-8')\
,self.ui.table.item(i,4).text().encode('utf-8')]
dataWriter.writerow(rowData)
</code></pre>
<p>试试看</p>
<pre><code>table = self.ui.table
for i in range(table.rowCount()):
row = [table.item(i, j).text() for j in range(5)]
writer.writerow(row)
</code></pre>