我正在尝试向同一程序中的现有文件添加 2 个新列。 csv 是由前面的函数生成的。
在这里看了很多答案后,我尝试了这个,但它不起作用,因为我找不到任何使用 csv dict writer
的答案,它们都是关于 csv writer
。这只会创建一个包含这两列的新文件。我可以得到一些帮助吗?
for me, sp in zip(meds, specs):
print(me.text, sp.text)
dict2 = {"Medicines": me.text, "Specialities": sp.text}
with open(f'Infusion_t{zip_add}.csv', 'r') as read, \
open(f'(Infusion_final{zip_add}.csv', 'a+', encoding='utf-8-sig', newline='') as f:
reader = csv.reader(read)
w = csv.DictWriter(f, dict2.keys())
for row in reader:
if not header_added:
w.writeheader()
header_added = True
row.append(w.writerow(dict2))
答案 0 :(得分:1)
您需要将新列附加到 row
,然后将 row
写入输出文件。您不需要字典或 DictWriter
。
您也可以在循环之前打开输出文件一次,然后在那里写入标题,而不是每次都通过主循环。
with open(f'(Infusion_final{zip_add}.csv', 'w', encoding='utf-8-sig', newline='') as f:
w = csv.writer(f)
w.writerow(['col1', 'col2', 'col3', ..., 'Medicines', 'Specalities']) # replace colX with the names of the original columns
for me, sp in zip(meds, specs):
print(me.text, sp.text)
with open(f'Infusion_t{zip_add}.csv', 'r') as read:
reader = csv.reader(read)
for row in reader:
row.append(me.text)
row.append(sp.text)
w.writerow(row)