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

如何将Python字典中的列表值写入CSV文件单个单元格

问题原因

Python 内置csv模块写入字段时,会对非字符串类型的值直接调用默认字符串转换方法。传入列表时就会输出['DZ', 'DB']这类带方括号、元素引号的列表原生表示,无法自动按自定义分隔符拼接内容。

修复方法

写入前将列表类型的字段值手动拼接为目标格式字符串即可,核心用str.join()方法实现,不需要额外依赖第三方库。

完整实现代码

import csv

fieldnames = ['name', 'area', 'country_code2', 'country_code3']

rows = [
    {'name': 'Albania',
     'area': 28748,
     'country_code2': 'AL',
     'country_code3': 'ALB'},
    {'name': 'Algeria',
     'area': 2381741,
     'country_code2': ['DZ', 'DB'],
     'country_code3': 'DZA'},
    {'name': 'American Samoa',
     'area': 199,
     'country_code2': 'AS',
     'country_code3': 'ASM'}
]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    for row in rows:
        # 仅当字段值为列表时做拼接处理,兼容原有字符串值
        if isinstance(row['country_code2'], list):
            # 此处用空格做分隔符,可根据需求替换为逗号、斜杠等其他符号
            row['country_code2'] = ' '.join(row['country_code2'])
        writer.writerow(row)
扩展提示
  • 如果需要多个字段支持多值列表写入,可以把判断逻辑抽成通用函数,遍历所有字段做类型检查后再写入
  • 若后续需要读取该单元格还原为列表,直接使用对应分隔符调用str.split()即可反向转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:03:50