Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用CSV写入文件会添加无关的引号_Python_Csv - Fatal编程技术网

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

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中创建以下项目: 试验 “哦,不!”

我正在从.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!'])