我正在从.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将是:
测试
哦不! "他们"在这里!
有关如何解决此问题的任何想法?谢谢!
答案 0 :(得分:1)
设置quoting=csv.QUOTE_NONE
和quotechar=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。