Python:CSV模块。EscapeChar影响输出

2 投票
2 回答
6863 浏览
提问于 2025-04-18 08:57

我想打开一个包含引号的CSV文件,并把引号去掉。我查看了Python的CSV模块文档,它确实能去掉引号,正是我想要的,但输出结果却在逗号前加了反斜杠,这正是我想避免的。这个代码:

csv.register_dialect('escaped',delimiter=",", escapechar="\\",  quoting=csv.QUOTE_NONE)
reader = csv.reader(open(input_file, "rb"), skipinitialspace=True)
writer = csv.writer(open(output_file, "wb"), dialect='escaped')

writer.writerows(reader)

输出的结果像这样:value1\,value2。我该怎么做才能把反斜杠去掉,让输出中只剩下逗号呢?输入文件里有很多行,看起来是这样的:

"Value1,Value2"

2 个回答

0

试着用 '\7' 作为转义字符:

with open('dmy.tmp','w') as f:
    writer=csv.writer(f,escapechar='\7',quoting=csv.QUOTE_NONE)
    content=[['a','b','c'],[1,2,3]]
    writer.writerows(content)
3

你看到的这个情况和文档中关于 QUOTE_NONE 的描述是一样的,文档里有详细说明,可以看看这里

如果你只是想去掉引号,而且输入的内容就像你评论里提到的那么简单,那这样做是不是可以呢?

with open('input') as in_file, open('output', 'w') as out_file:
    for line in in_file:
        out_file.write(line.replace('\"', ''))

撰写回答