如何将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
相关产品推荐
相关产品推荐

