我正在解析来自多个excel文件的数据,转换它们,并将它们写入单个csv文件。我能够让它发挥作用。但是,我决定将部分分解为函数并通过顺序调用每个函数来运行脚本。
进行此更改后,脚本的编写器部分以某种方式循环,现在写入以下内容: header_row,data_row1,header_row,data_row1,data_row2,header_row ...
以下是出现问题的打印功能。我已经确认DictList2中的数据是正确形成的,并且[header]是准确的。
def PrintProcess2(directory2):
with open(directory2 + "participant list.csv", 'wb') as f:
headers = sorted([k for k, v in DictList2[0].items()])
csv_data = [headers]
for d in DictList2:
csv_data.append([d[h] for h in headers])
writer = csv.writer(f)
writer.writerows(csv_data)
此函数中的代码与没有函数的版本相同,并且正确地写入数据。在这一点上,我完全被难倒了。有人可以帮忙吗?
答案 0 :(得分:0)
每次循环时都不要创建新的csv.writer实例。
您的主要问题是您要将行追加到csv_data然后使用writerows ...尝试类似以下内容:
def PrintProcess2(directory2):
with open(directory2 + "participant list.csv", 'wb') as f:
writer = csv.writer(f)
headers = sorted([k for k, v in DictList2[0].items()])
writer.writerow(headers)
for d in DictList2:
writer.writerow([d[h] for h in headers])