在python

时间:2017-08-30 01:22:54

标签: python

我有一份清单如下。 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)

但是,它不能完成我想要的工作,因为它始终从第一列开始,而不是从第二列开始。请帮我。

3 个答案:

答案 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)])