虽然有关python csv报价的问题很多,但我相信我遇到了一个未涉及的案例。
我有一些示例代码:
import pandas as pd
import csv
df = [(1, '1\' 2"',), (2, '1\' 4"')]
df = pd.DataFrame(df, columns=['months', 'height'])
print(df.head())
df.to_csv('blah.csv', index=False, quoting=csv.QUOTE_MINIMAL,
quotechar='"', escapechar='\\')
它产生以下输出:
months height
0 1 1' 2"
1 2 1' 4"
保存到csv中,看起来像:
months,height
1,"1' 2"""
2,"1' 4"""
但是,我希望它看起来像这样:
months,height
1,"1' 2\""
2,"1' 4\""
(如果您想知道,这就是Spark默认csv编写器的输出格式。)
双引号被转义的地方。我找不到一种方法来做...任何指针将不胜感激。
答案 0 :(得分:2)
您需要传递doublequote=False
(默认为True),也需要传递quoting=QUOTE_NONNUMERIC
:
df.to_csv('blah.csv', index=False, quoting=csv.QUOTE_NONNUMERIC,
quotechar='"', escapechar='\\', doublequote=False)
查看文档:{{3}}
输出:
"months","height"
1,"1' 2\""
2,"1' 4\""