我正在尝试以csv导出panda数据帧。有些数据包含双引号,我无法正确转义。
import pandas as pd
from io import StringIO
inp = [{'c1':10, 'c2':'some text'}, {'c1':11,'c2':'some "text"'}]
df = pd.DataFrame(inp)
output = StringIO()
df.to_csv(output, sep='t', escapechar='b', header=False, index=False)
结果我得到了双引号,用另一个双引号转义:
'10tsome textn11t"some ""text"""n'
但我需要它:
'10tsome textn11t"some x08"textx08""n'
我尝试了to_csv((函数的双引号、quotechar和引号参数的不同组合,但没有成功。我得到的最接近的是:
df.to_csv(output, sep='t', escapechar='b', header=False, index=False, doublequote=False)
这会导致正确转义的双引号,但整个单元格没有被双引号包裹,因此在接下来的步骤中无法正确解析
'10tsome textn11tsome x08"textx08"n'
有没有一种方法可以让熊猫用所需的转义符转义双引号?
PS。目前我只有一个变通办法来替换"其中\x08";在字符串缓冲区中手动
我通过以下设置解决了这个问题。
df.to_csv(output, sep="t", escapechar="\", header=False, index=False, doublequote=False)
escapechar="\"
将在您的值中放一个带双引号的单反斜杠,因为您已经指定了doublequote=False
,这将确保双引号与另一个双引号进行注释转义。