我有一份清单如下。 a = [[1,2,3],[2,3,4],[3,4,5]]
我还有一个单独的名单 names = ['Ann','john','smith']
现在我想把它写成一个csv文件,如下所示
1st row: Ann,1,2,3
2nd row: john,2,3,4
3rd row: smith,3,4,5
我目前正在使用;
with open(output_file, 'w') as f:
writer = csv.writer(f)
writer.writerows(a)
但是,它不能完成我想要的工作,因为它始终从第一列开始,而不是从第二列开始。请帮我。
答案 0 :(得分:1)
这里要理解的关键是你想要并行处理你的列表 。这可以通过使用内置函数zip
轻松完成。它需要一个可迭代的列表,并将每个iterable的 n -th元素作为元组生成。然后,您可以使用str.format
:
names = ['Ann', 'john', 'smith']
sublists = [[1,2,3], [2,3,4], [3,4,5]]
with open(output_file, 'w') as file:
for name, sublist in zip(names, sublists):
row = '{},{},{},{}'.format(name, *sublist)
file.write(row)
请注意,如果您的列表大小不同,您可能需要查看使用itertools.zip_longest
。
答案 1 :(得分:0)
with open(output_file, 'w') as f:
f.write('\n'.join([elem[0]+','+str(elem[1]).strip('[').strip(']') for elem in zip(names,a)]))
试试这个。
答案 2 :(得分:0)
with open("output_file", 'w') as f:
f.write("\n".join([','.join(map(str, [name] + extra)) for name, extra in zip(name, extras)])