gpt4 book ai didi

python - 如何使用 csv 将列表写成单独的元素?

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:20 25 4
gpt4 key购买 nike

我有两个如下所示的列表:

list1 = ['filename1', 'filename2', 'filename3']
list2 = ['1', '2', ['3', '4', '5']]

我怎样才能写入一个这样的 csv 文件?

filename1,1
filename2,2
filename3,3,4,5

我尝试了两种方法,但都没有用:

with open(outfname, 'wb') as fout:
csv_out = csv.writer(fout)
csv_out.writerows(izip(list1, list2))

这表明:

filename1,['1']
filename2,['2']
filename3,['3','4','5']

我尝试在 writerows 之前添加这个:

",".join(list2)

但是结果会显示:

filename1,1
filename2,2
filename3,"1,2,3"

最佳答案

@Satya 有一个使用 pandas 的好主意,但你需要展平 list2,你可以使用 .apply() 来做到这一点:

>>> import pandas as pd
>>> import sys
>>> df = pd.DataFrame({'list1': list1, 'list2': list2})
>>> df = df.join(df.list2.apply(lambda x: pd.Series(x)))
>>> df.drop('list2', axis=1).to_csv(sys.stdout, header=False, index=False)
filename1,1,,
filename2,2,,
filename3,3,4,5

这会在缺少数据的地方放置空字段。
或者,您可以编写自己的特殊 zip:

def my_zip(l1, l2):
for a, b in zip(l1, l2):
try:
yield [a]+b
except TypeError:
yield [a, b]

>>> csv_out = csv.writer(sys.stdout)
>>> csv_out.writerows(my_zip(list1, list2))
filename1,1
filename2,2
filename3,3,4,5

这正是请求的输出。

关于python - 如何使用 csv 将列表写成单独的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34891527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com