Python写入CSV时列表未正确拆分列的问题排查
问题分析与解决
问题根源
你把csv.writer的quotechar参数设成了和delimiter一样的逗号(,),这直接破坏了CSV的解析逻辑:
delimiter是用来拆分列的分隔符quotechar是用来包裹包含分隔符的字段的符号
两者设为同一个字符时,CSV阅读器会把所有逗号都识别为字段包裹符号,而非列分隔符,最终所有内容被合并到一列。
修正方案
把quotechar改为与delimiter不同的字符,比如默认的双引号("),或者直接省略该参数(csv.writer默认quotechar就是双引号)。
修正后的代码:
import csv # 使用with语句更安全,无需手动关闭文件 with open('midi_data.csv', 'w', newline="") as f: writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) for item in data: writer.writerow(item) print(item)
补充说明
- 使用
with语句管理文件句柄,能自动在代码块结束后关闭文件,避免异常场景下的资源泄漏 csv.QUOTE_MINIMAL模式只会在字段包含delimiter或quotechar时才用quotechar包裹字段,保证输出的CSV格式规范
内容的提问来源于stack exchange,提问作者Yvonne
相关产品推荐
相关产品推荐

