ZZM*_*ike 6 python csv python-3.x
这是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)
Run Code Online (Sandbox Code Playgroud)
输出文件\n在每行的末尾都有一个,显然在结尾处还有一个.当我将它带入Excel时,每行之间会出现空白行.如果我用Notepad ++打开它也一样.
但是,如果我more从命令行,\n不显示.
我\n在文件的末尾看到了关于a的另一个问答- 但这个问题\n在每一行的末尾都是关于a 的.(我不明白为什么more不给\n.)
我计划将文件带入OpenOffice Calc.
pao*_*lov 10
仅在Windows上使用Python时会出现此问题.
在Python v3中,您需要在open call中添加newline ='':
在Python v2上,您需要在传递给csv之前在open()调用中以"b"打开文件为二进制文件
换线
with open('stocks2.csv','w') as f:
Run Code Online (Sandbox Code Playgroud)
至:
with open('stocks2.csv','wb') as f:
Run Code Online (Sandbox Code Playgroud)
将解决问题
有关此问题的更多信息:
这是一个额外的回车符,这是 Windows 特定的问题,与 Python 2/3 差异无关。如果您在 Notepad++ 中打开文件并启用Show all characters,您将看到以下内容:
Symbol,Price,Date,Time,Change,Volume[CR]\n[CR][LF]\nAA,39.48,6/11/2007,9:36am,-0.18,181800[CR]\n[CR][LF]\nAIG,71.38,6/11/2007,9:36am,-0.15,195500[CR]\n[CR][LF]\nRun Code Online (Sandbox Code Playgroud)\n\n这是因为 Windows 上的 Python 正在将行结尾从 转换\'\\n\'为\'\\r\\n\',而该writerows()函数已经添加\'\\r\\n\'到每行的末尾。发生了什么:
\'\\r\\n\'\\n\' 并认为需要将其更改为\'\\r\\n\'. 所以你得到了\'\\r\\r\\n\'.您没有看到打印到控制台有问题的原因是它没有将额外的内容检测\'\\r\'为新行,而 Excel 和 Notepad++ 则将其检测为新行。
对于 Python 3,您应该使用newline=\'\'此处记录的选项: https: //docs.python.org/3/library/csv.html。
\n\ncsv.writer(csvfile, dialect=\'excel\', **fmtparams)
\n\n返回一个编写器对象,负责将 user\xe2\x80\x99s 数据转换为给定类文件对象上的分隔字符串。csvfile 可以是任何具有 write() 方法的对象。如果 csvfile 是文件对象,则应使用 newline=\'\' [1] 打开它。
\n
我在适用于Python 3的Windows上遇到了此问题。我尝试在打开文件时更改换行参数,并与配合使用newline=''。
添加newline=''到open()方法,如下所示:
with open('stocks2.csv','w', newline='') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
它将作为魅力。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
13756 次 |
| 最近记录: |