我正在寻找一种方法来扩展 CSV 文件的标题。 我在一个字典 (dict1) 和另一个字典 (dict2) 中有文件头,其中一些键是 dict1 的副本,我想扩展文件中的 header 。
有人告诉我有类似 csv.header.extend() 的东西,但不确定它是如何工作的,也找不到示例。
我的 CSV 看起来像:
V,T1,T2,T3,T4
U1,a,b,c,d
U2,q,w,e,r
假设 dict2 是
dict2 = {'V': 'U3', 'T1': 'p', 'T2': 'o', 'T5': 'z'}
CSV 输出结果如下:
V,T1,T2,T3,T4,T5
U1,a,b,c,d,
U2,q,w,e,r,
U3,p,o,,,z
有人知道这是怎么回事吗?
请您参考如下方法:
我建议使用 csv.DictWriter它使用所有字段:
fieldnames = ['V','T1','T2','T3','T4','T5']
with open(...) as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
然后您可以通过传递包含该行值的字典来写入每一行:
for my_dict in my_dicts:
writer.writerow(my_dict)
所以要采取的步骤是:
- 计算包含两个文件标题的列表(即,将现有文件的
['V','T1','T2','T3','T4']与您可能拥有的其他 header ,例如'T5')。 - 计算每行包含每个标题值的字典。例如,您的
dict2需要变成:dict2 = {'V': 'U3', 'T1': 'p', 'T2': 'o', 'T5' : 'z', 'T3': '', 'T4': ''}. - 之后,您可以使用上面的代码创建包含输出文件中所有可能字段的
DictWriter,您可以通过将它们作为字典传递来写入每个输出行。
