CSV文件头扩展python

时间:2013-11-13 21:29:28

标签: python csv

我正在寻找扩展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

任何人都知道这会起作用吗?

1 个答案:

答案 0 :(得分:1)

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