Python 使用CSV写入文件会添加无关的引号
我正在从.tsv文件中读取字符串值,进行筛选,然后写入新文件。当一行的项具有双引号时,它会将其加倍,并将周围的引号添加到该项中。例如:Python 使用CSV写入文件会添加无关的引号,python,csv,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中创建以下项目: 试验 “哦,不!”
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是:
试验
哦,不!“他们”在这里
你知道怎么解决这个问题吗?谢谢 设置
quoting=csv.QUOTE\u NONE
和quotechar=NONE
。然后引号将不会被转义
然后,您应该设置转义码
,以便在字段中出现分隔符时将其转义。(感谢@dano提到这一点)
请记住,您当前的示例没有给出任何使用csv/tsv的理由,因为没有单独的字段。这是读取csv以知道它们是实际报价的预期行为。。。看看我读到的.tsv没有它们,它读起来很好,所以我不确定你的意思。你知道解决我问题的方法吗?我尝试了csv.writer(fp,delimiter='\t',quoting=csv.QUOTE\u NONE,escapechar='\\'),结果是:哦,不\“他们”在这里!我做错了什么?好极了,似乎在单引号和双引号上都有效,谢谢@请注意,如果执行此操作时尝试写入的文本中出现
分隔符的任何实例,则csv
将引发异常。如果有问题,您需要设置escapechar
。
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!'])