You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python写入Tab分隔CSV时去除嵌套列表方括号的问题咨询

问题说明

现有两个列表:

a = [1,2,3,4]
b = [[2,3,4,5],[2,4,3,9], [9,4,6,8], [7,3,8,5]]

需求为将两个列表以制表符为分隔符写入CSV文件时,去除嵌套列表外层的方括号,仅保留括号内元素内容。

原有代码问题

当前使用的实现代码:

import csv
with open('output.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
    wr = csv.writer(myfile, delimiter='\t')
    wr.writerows(zip(a,b))

代码运行后输出为:

1	[2, 3, 4, 5]
2	[2, 4, 3, 9]
3	[9, 4, 6, 8]
4	[7, 3, 8, 5]

期望输出为:

1	2, 3, 4, 5
2	2, 4, 3, 9
3	9, 4, 6, 8
4	7, 3, 8, 5
解决方案

问题根源是zip(a,b)生成的迭代项中,第二个元素为列表类型,csv模块写入时会直接调用列表的默认字符串表示,自动携带外层方括号。只需在写入前将嵌套列表处理为不带方括号的字符串即可,以下是两种可直接运行的实现:

  • 方案1:字符串切片去除首尾方括号
    直接将子列表转为字符串后,切掉首尾的[和],输出格式和预期完全一致:
    import csv
    a = [1,2,3,4]
    b = [[2,3,4,5],[2,4,3,9], [9,4,6,8], [7,3,8,5]]
    
    with open('output.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
        wr = csv.writer(myfile, delimiter='\t')
        for val_a, val_b in zip(a, b):
            # 转字符串后移除首尾的方括号
            processed_b = str(val_b)[1:-1]
            wr.writerow([val_a, processed_b])
    
  • 方案2:手动拼接子列表元素为字符串
    如果需要自定义元素间的分隔格式,可以遍历子列表元素手动拼接,灵活度更高:
    import csv
    a = [1,2,3,4]
    b = [[2,3,4,5],[2,4,3,9], [9,4,6,8], [7,3,8,5]]
    
    with open('output.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
        wr = csv.writer(myfile, delimiter='\t')
        for val_a, val_b in zip(a, b):
            # 子列表元素转字符串后用", "拼接,无外层方括号
            processed_b = ", ".join(map(str, val_b))
            wr.writerow([val_a, processed_b])
    

两种方案运行后生成的CSV文件内容完全匹配预期输出,可根据实际需求选择。如果需要调整元素间的分隔样式(比如去掉空格、换其他分隔符),优先选择方案2修改连接符即可。

内容的提问来源于stack exchange,提问作者Gunners

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:12:26