使用CSV写入文件会添加多余的引号

2024-04-26 10:00:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个.tsv文件中读取字符串值,进行过滤,然后写入一个新文件。当一行的项有双引号时,它会将它们加倍,并将周围的引号添加到该项中。例如:

with open ("test.tsv", "wb") as fp:
    fp = csv.writer (fp, delimiter='\t')
    fp.writerow (["test"])
    fp.writerow (["Oh no! \"They\" are here!"])

这将在中创建以下项测试.tsv地址:

test

"Oh no! ""They"" are here!"

我到处找,找不出它为什么会这样,也找不出我能做些什么来改变它。我希望它保持报价,而不是重复,所以首选测试.tsv可能是:

test

Oh no! "They" are here!

你知道怎么解决这个问题吗?谢谢!你知道吗


Tags: 文件no字符串testheretsvwithopen
1条回答
网友
1楼 · 发布于 2024-04-26 10:00:01

设置quoting=csv.QUOTE_NONEquotechar=None。那么引号将不会被转义。你知道吗

然后您应该设置escapechar,以便在分隔符出现在字段中时对其进行转义。(感谢@dano提到这一点)

import csv
with open ("test.tsv", "wb") as fp:
    fp = csv.writer (fp, delimiter='\t', quoting=csv.QUOTE_NONE, quotechar=None, escapechar="|")
    fp.writerow (["test"])
    fp.writerow (['Oh no! "They" are here!'])

请记住,由于没有单独的字段,因此当前的示例没有给出任何使用csv/tsv的理由。你知道吗

相关问题 更多 >