CSV作家加倍报价

时间:2019-07-09 19:40:59

标签: python csv delimiter quoting

我在Python中有一个字符串:hello, my name is "Joe"。当我尝试使用csv模块进行书写时,我得到了"hello, my name is ""Joe"""。我希望看到的是"hello, my name is "Joe""

在存在双引号的情况下,是否仍有CSV编写器不添加双引号的问题?

代码:

s = 'hello, my name is "Joe"'
with open(filename, 'w', newline='', encoding='utf-8') as f_out:
    writer = csv.writer(f_out)
    writer.writerow([s])

4 个答案:

答案 0 :(得分:3)

创建real-time prioritydoc)时可以使用ulimit参数:

quotechar

文件输出为:

csv.writer

答案 1 :(得分:3)

根据RFC 4180: “如果使用双引号将字段括起来,则必须在字段内部出现双引号,方法是在其前面加上另一个双引号。”

但是,如果您要根据自己的特定需求进行更改,请尝试禁用双引号,并且必须定义一个转义字符:

import csv

s = ['hello, my name is "Joe"']
with open(filename, 'w', newline='', encoding='utf-8') as f_out:
    writer = csv.writer(f_out, doublequote=False, escapechar='\\')
    writer.writerow(s)

输出文件如下:

"hello, my name is \"Joe\""

但是,我建议使用quotechar的{​​{1}}参数来更改引号字符,就像@AndrejKesely在other answer中一样。

答案 2 :(得分:0)

两种解决方案:

您都可以使用quotechar来更改引号字符,以便忽略字符串中的双引号。 csv.writer(f_out, quotechar="'")将为您解决。

或者您可以将escapechar="\\"doublequote=False一起设置。这会将反斜杠放在每个双引号之前,以将其转义到字符串中。 csv.writer(f_out, escapechar="\\", doublequote=False)

尝试这两种方法。我希望这能回答您的问题。

答案 3 :(得分:-2)

/foo/*[local-name() = 'bar']/*[local-name() = 'quux']