python : 如何允许 python 在更改 csv 文件中的分隔符时不添加引号

python : How to allow python to not add quotation marks while changing delimiter in the csv file

我已经编写了一个脚本来将 csv 文件中的定界符从逗号转换为管道符号,但是这样做并没有删除 csv 文件添加的额外引号。

脚本如下:-

import csv

filename = "sample.csv"

with open(filename,mode='rU') as fin,open('c:\files\sample.txt',mode='w') as fout:

        reader= csv.DictReader(fin)
        writer = csv.DictWriter(fout,reader.fieldnames,delimiter='|')
        writer.writeheader()
        writer.writerows(reader)

案例一: 现在,例如,如果 csv 中的一个字段包含 "hi" hows you,good 那么 csv 会将其设置为“”"hi" hows you,good”,然后 python 加载它作为文本文件中的“"hi" hows you,good”而不是 "hi" hows you,good

案例 2: 而对于像 hi hows 这样的字段,你的 csv 将它设为 "hi hows,you" 并且在 运行 脚本之后它被保存为 hi hows,你在文本文件中是正确的。

请你帮我解决案例1。

在记事本中打开示例 csv 文件:-

ID,IDN,DESC,TNO
A019,1,"""Pins ""  is dangerous",2
B020,1,"""ache"",headache/fever-like",3
C021,2,stomach cancer,1
D231,3,"hair,""fall""",1

脚本结果后:

ID|IDN|DESC|TNO
A019|1|"""Pins ""  is dangerous"|2
B020|1|"""ache"",headache/fever-like"|3
C021|2|stomach cancer|1
D231|3|"hair,""fall"""|1

我想要的结果是:

ID|IDN|DESC|TNO
A019|1|"Pins "  is dangerous|2
B020|1|"ache",headache/fever-like|3
C021|2|stomach cancer|1
D231|3|hair,"fall"|1

有效:

writer = csv.DictWriter(fout,reader.fieldnames,delimiter='|',quoting=csv.QUOTE_NONE,quotechar="")
  • 将引用定义为 "no quoting":quoting=csv.QUOTE_NONE
  • 将引号字符定义为 "no quote char":quotechar=""

结果

ID|IDN|DESC|TNO
A019|1|"Pins "  is dangerous|2
B020|1|"ache",headache/fever-like|3
C021|2|stomach cancer|1
D231|3|hair,"fall"|1

请注意,引用 很有用。因此,禁用它会让您享受 "delimiters in the fields" 的乐趣。由您来确保它不会发生。