这是O'Reilly Cookbook中的一个示例(数据集被截断)
headers = ['Symbol','Price','Date','Time','Change','Volume']
rows = [{'Symbol': 'AA', 'Volume': 181800, 'Change': -0.18,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 39.48},
{'Symbol': 'AIG', 'Volume': 195500, 'Change': -0.15,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 71.38} ]
with open('stocks2.csv','w') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(rows)
输出文件在每一行的末尾都有一个
\n
,显然在末尾还有一个more
。当我将其导入Excel时,每行之间都会出现空白行。如果使用Notepad++打开它也一样。但是,如果我从命令行使用
\n
,那么\n
不会显示。我在文件末尾看到了另一个关于
\n
的问答-但这是关于每行末尾的more
的问答。 (而且我不明白为什么\n
不提供ojit_code。)我计划将文件带入OpenOffice Calc。
最佳答案
仅Windows上的Python会出现此问题。
在Python v3中,您需要按以下步骤在open调用中添加newline=''
:
Python 3.3 CSV.Writer writes extra blank rows
在Python v2上,您需要在open()调用中使用“b”将文件打开为二进制文件,然后再传递给csv
换线
with open('stocks2.csv','w') as f:
至:with open('stocks2.csv','wb') as f:
将解决问题有关此问题的更多信息,请参见:
CSV in Python adding an extra carriage return, on Windows