我正在尝试将DataFrame写入包含单引号和双引号的单元格的文件。我已经结合使用了'escapechar'和'quotechar'来实现它,但是我没有成功:
data_test = pd.DataFrame(np.array([["CD's", 'CD\'sss', 1], ['"', '"', 2], ['one', 'other', 3]]))
with open(outfile, 'w') as output_file:
writer = csv.writer(output_file,
delimiter = '\t',
lineterminator = '\r\n',
quotechar = '\'',
doublequote=False,
quoting=csv.QUOTE_NONE,
escapechar= '\''
)
for i in range(len(data_test)):
line = data_test.iloc[i]
writer.writerow(line)
output_file.close()
我得到的输出在包含单引号的单元格(单元[1,1]和单元[1,2])中包含单双引号,但这不是正确的解决方案。
CD''s CD''sss 1
" " 2
one other 3
我正在尝试获取:
CD's CD'sss 1
" " 2
one other 3
关于如何结合使用单引号和双引号的任何想法?
使用此:
writer = csv.writer(output_file,
delimiter = '\t',
lineterminator = '\r\n',
quotechar = "\\",
doublequote=False,
quoting=csv.QUOTE_NONE,
escapechar="\\"
)
输出
CD's CD'sss 1
" " 2
one other 3
这有点神秘,但我认为这是重点:
Dialect.escapechar¶ 如果将引号设置为QUOTE_NONE,则编写器使用一个单字符字符串来转义分隔符,如果双引号设置为False,则使用quotechar。阅读时,escapechar删除了以下字符的任何特殊含义。默认为无,这将禁用转义。
您应将转义字符设置为无。
您似乎很难在嵌入式引号上做一些特殊的事情。这与您的用例不符。它们没有特别的含义:它们只是字符串中的字符,要像其他所有字符一样,逐字记录。它们是数据,而不是可能具有特殊含义的命令行字符串。删除转义处理-指示作者 add
pandas.to_csv
?