这是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

10-07 12:56
查看更多