使用CSV写入文件会添加无关的引号

时间:2014-09-10 00:04:57

标签: python csv

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

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

这会在test.tsv中创建以下项目:

  

测试

     

"哦不! ""他们""在这里!"

我到处寻找,无法找到它为什么这样做或我能做些什么来改变它。我希望它保持引号而不是重复,所以首选的test.tsv将是:

  

测试

     

哦不! "他们"在这里!

有关如何解决此问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

设置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。