gpt4 book ai didi

python - 如何将两个不同长度的列表写入csv文件中的列和行

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

我有两个不同长度的列表:

list1 = ['a']
list2 = [['apple','banana','grapes']]

我想要的 csv 是以下内容:

col1  col2
a apple, banana, grapes

所以首先我尝试了 itertoolizip,但它似乎只将列表的第一个元素放在 col2 的 list2 中,所以它看起来像:

col1  col2
a apple

如何获得上面的版本,以 list2 中的完整列表作为行?

我使用以下代码将以上内容存储到 csv:

import csv
from itertools import izip

with open('some.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(izip(list1,sum(list2,[]))

最佳答案

izip 会截断较长的列表以匹配较短的列表,因此 izip(['a'], ['a', 'b', 'c']) 实际上给出了 ['a', 'a'],这就是问题的来源。

此外,通常您会希望使用 str.join() 而不是 sum() 将列表转换为字符串。

根据这个问题,我猜您想要一个由制表符分隔的 csv 文件。解决问题首先将list2转换为字符串列表:

    >>> list2_str = [','.join(lst) for lst in list2]
['apple,banana,grapes']

然后压缩list1list2_str:

    >>> list3 = zip(list1, list2_str)
[['a', 'apple,banana,grapes']]

用“excel-tab”方言打开一个 csv 编写器并写入行:

    >>> writer = csv.writer(file, dialect='excel-tab')
>>> writer.writerows(list3)

如果您想要一个以“,”作为分隔符的 csv 文件,只需删除 dialect 参数即可。 Python 将正确引用第二列,生成

    a,"apple,banana,grapes"

在 csv 文件中。

关于python - 如何将两个不同长度的列表写入csv文件中的列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42086462/

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