2

我正在寻找一种方法来扩展 CSV 文件的标题。我在一个字典 ( dict1) 和另一个字典 ( dict2) 中有文件头,其中一些键是重复的,dict1并且希望扩展文件中的标题。

有人告诉我有类似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

任何人都知道这将如何工作?

4

1 回答 1

1

我建议使用csv.DictWriter使用所有字段的 a:

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']现有文件与您可能拥有的其他标题合并,例如'T5')。
  • 计算每行包含每个标题的值的字典。例如,您dict2需要成为:dict2 = {'V': 'U3', 'T1': 'p', 'T2': 'o', 'T5': 'z', 'T3': '', 'T4': ''}.
  • 之后,您可以使用上面的代码DictWriter在输出文件中创建所有可能的字段,并且可以通过将每个输出行作为字典传递来编写每个输出行。
于 2013-11-13T22:12:28.807 回答