将多个列表写入 csv(一个是嵌套列表)

Joh*_*hnJ 1 python list

我说过三个列表,其中一个是这样嵌套的:

a = [1, 2, 3, 4]
b = ["abc", "def", "dec", "erf"]
c = [[5, 6, 7], [8, 9, 10], [11, 12, 13.3], [14, 15, 16]]
Run Code Online (Sandbox Code Playgroud)

我想要CSV它的文件输出,如下所示:

1,abc,5,6,7
2,def,8,9,10
3,erf,11,12,13.3
...
Run Code Online (Sandbox Code Playgroud)

我尝试将它们压缩并写入CSV文件,如下所示:

1,abc,5,6,7
2,def,8,9,10
3,erf,11,12,13.3
...
Run Code Online (Sandbox Code Playgroud)

但输出有这些愚蠢的括号,如下所示:

1,abc,"[5,6,7]"
2,def,"[8,9,10]"
3,erf,"[11,12,13.3]"
...
Run Code Online (Sandbox Code Playgroud)

但我希望它们没有括号和引号,如下所示:

1,abc,5,6,7
2,def,8,9,10
3,erf,11,12,13.3
...
Run Code Online (Sandbox Code Playgroud)

:(

Dan*_*ejo 5

使用:

with open('filer.csv', "w") as f:
    writer = csv.writer(f)
    for ai, bi, ci in zip(a, b, c):
        writer.writerow([ai, bi, *ci])
Run Code Online (Sandbox Code Playgroud)

输出

1,abc,5,6,7
2,def,8,9,10
3,dec,11,12,13.3
4,erf,14,15,16
Run Code Online (Sandbox Code Playgroud)

正如您所说,您有嵌套列表,因此您需要展平列表,表达式[ai, bi, *ci] 将其展平。

得到括号的原因是(可能)对传递给它的可迭代的每个元素writerow应用函数str 。列表的字符串表示形式包括括号,例如:

In[3]: str([1, 2, 3])
Out[3]: '[1, 2, 3]'
Run Code Online (Sandbox Code Playgroud)

  • 感谢您为我解决了这个问题 - 我只花了 2 个小时在这个问题上 - 我真的应该放弃成为一名程序员!再次感谢你。 (2认同)