Python 3.6处理CSV含多逗号数据:存单个单元格及指定表头
解决CSV写入的两个常见问题:特殊字符处理与表头对应
嘿,这俩问题在数据采集后导出CSV时太常见了,我来给你一步步讲清楚怎么搞定:
1. 把含多逗号的数据完整存入单个单元格
直接用f.write手动拼字符串很容易踩这个坑——CSV里逗号是单元格分隔符,带逗号的内容自然会被拆分。最稳妥的办法是用Python内置的csv模块,它会自动帮你处理特殊字符的转义,完全不用自己手动拼引号。
要是你非要手动处理的话,得把带逗号的字段用双引号包起来,比如:"这是带,逗号的内容",但如果字段里本身有双引号,还要转义成两个双引号(比如"内容里有""双引号""还有,逗号"),这种手动操作很容易漏情况,所以强烈推荐用csv模块省心。
2. 让数据点精准对应到特定表头下
用csv.DictWriter就能完美解决这个问题,它允许你以字典的形式传入数据,字典的键对应表头的列名,不管你数据的顺序如何,都会精准写入对应的列里,完全不用纠结顺序问题。
完整代码示例
import csv # 1. 先定义好你的表头 headers = ["站点名称", "采集时间", "含多逗号内容", "数据标识"] # 2. 准备你的数据,含逗号的字段直接写就行,不用手动加引号 data_list = [ { "站点名称": "站点A", "采集时间": "2024-05-20", "含多逗号内容": "这里有,好多个,逗号,必须保留在一个单元格", "数据标识": "ID001" }, { "站点名称": "站点B", "采集时间": "2024-05-20", "含多逗号内容": "测试,逗号,转义,效果", "数据标识": "ID002" } ] # 3. 写入CSV文件 with open("采集数据.csv", "w", newline="", encoding="utf-8") as f: # 初始化DictWriter,指定表头字段 writer = csv.DictWriter(f, fieldnames=headers) # 先写入表头行 writer.writeheader() # 批量写入数据行,csv模块会自动处理特殊字段 writer.writerows(data_list)
关键细节说明
newline="":这是Python写入CSV的最佳实践,能避免Windows系统下出现多余的空行。encoding="utf-8":确保中文或特殊字符不会出现乱码问题。csv模块会自动识别带逗号、换行、双引号的字段,自动给它们加上双引号包裹,保证内容完整留在单个单元格里。
如果你的数据是列表形式而非字典,也可以用csv.writer,但必须保证每个数据列表的顺序和表头完全一致,不过DictWriter显然更灵活,更适合对应特定表头的场景。
内容的提问来源于stack exchange,提问作者Jone dowwe
相关产品推荐
相关产品推荐

