在python中从csv中的特定列写入列表

在python中从csv中的特定列写入列表,python,Python,我有一个清单如下。 a=[[1,2,3],[2,3,4],[3,4,5]] 我还有一份单独的名单 姓名=[“安”、“约翰”、“史密斯”] 现在我想将其写入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)

我有一个清单如下。 a=[[1,2,3],[2,3,4],[3,4,5]]

我还有一份单独的名单 姓名=[“安”、“约翰”、“史密斯”]

现在我想将其写入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)
但是,它不能完成我想要的工作,因为它总是从第一列开始,而不是从第二列开始。请帮帮我

with open(output_file, 'w') as f:
   f.write('\n'.join([elem[0]+','+str(elem[1]).strip('[').strip(']') for elem in zip(names,a)]))

试试这个。

这里要理解的关键点是,您希望并行处理列表。这可以通过使用内置函数
zip
轻松实现。它获取一个iterable列表,并将每个iterable的第n个元素作为元组生成。然后,您可以使用
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)
注意:如果您的列表大小不同,您可能需要考虑使用

with open("output_file", 'w') as f:
    f.write("\n".join([','.join(map(str, [name] + extra)) for name, extra in zip(name, extras)])