【发布时间】:2017-02-08 17:56:07
【问题描述】:
我需要修改 CSV 文件的某些列以在其中添加一些文本。一旦我修改了这些列,我将整行写入一个新的 CSV 文件,但它不保留原始格式,因为它在空列中添加了“”。
原始 CSV 是我注册为的特殊方言:
csv.register_dialect('puntocoma', delimiter=';', quotechar='"', quoting=csv.QUOTE_ALL)
这是我的代码的一部分:
with open(fileName,'rt', newline='', encoding='ISO8859-1') as fdata, \
open(r'SampleFiles\Servergiro\fout.csv',
'wt', newline='', encoding='ISO8859-1') as fout:
reader=csv.DictReader(fdata, dialect='puntocoma')
writer=csv.writer(fout, dialect='puntocoma')
我正在使用 DictReader 和 CSV 模块读取 CSV 然后我修改我需要的列:
for row in reader:
for (key, value) in row.items():
if key=='C' or key == 'D' or key == 'E':
if row[key] != "":
row[key] = '<something>' + value + '</something>'
我把修改后的内容写成如下
content = list(row[i] for i in fields)
writer.writerow(content)
原始 CSV 包含如下内容(包括标题):
"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"Ma";"No";"O 3";"O 4";"O 5"
"3123131";"Lorem";;;;;;;;;;;"Ipsum";"Ar";"Maquina Lorem";;;
"3003321";"HD 2.5' EP";;"asät 600 MB<br />Ere qweqsI (SAS)<br />tre qwe 15000 RPM<br />sasd ty 2.5 Zor<br />Areämis tyn<br />Ser Ja<br />Ütr ewas/s";;;;;;;;;"rew";"Asert ";"Trebol";"Casa";;
"3026273";"Sertro 5 M";;;;;;;;;;;"Rese";"Asert ";"Trebol";"Casa";;
但我修改后的 CSV 写了以下内容:
"3123131";"<something>Lorem</something>";"";"";"";"";"";"";"";"";"";"";"<something>Ipsum</something>";"<something>Ar</something>";"<something>Maquina Lorem</something>";"";"";""
我已修改添加 CSV 标题的原始问题。 (表头名称非原版。
如何编写不带引号的新 CSV。我的猜测是关于方言,但实际上它是一种引用所有方言,除了为空的列。
【问题讨论】:
-
请edit您的问题,并显示原始 CSV 的第一行(即标题行)包含的内容。我需要这个来重现问题,以便测试可能的解决方案。多几行数据也不错。
标签: python python-3.x csv