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" 的乐趣。由您来确保它不会发生。
我已经编写了一个脚本来将 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" 的乐趣。由您来确保它不会发生。