Python中如何读取CSV文件并生成逐字段拆分的标准嵌套列表
读取结果不符合预期的核心原因
csv.reader 默认以逗号(,)作为字段分隔符识别行内内容,你的测试文件test.csv 行内根本不存在逗号分隔符,因此每一行会被识别为一个完整的字符串,直接作为内层列表的唯一元素存入,无法拆分成独立的字段元素。
从你实际运行后的输出结果来看,你的文件行内实际是用分号;做字段分隔;你贴出的原始文件预览里则是用空格做分隔,两种情况只要在初始化读取器时显式指定和文件匹配的分隔符,就能拿到目标结构的嵌套列表。
对应调整代码
根据你文件实际使用的分隔符选择对应写法即可:
- 若文件用分号
;分隔字段(和你终端打印的输出内容匹配):import csv # 补充newline='' 是csv模块官方推荐的文件打开参数,避免跨平台读取时出现多余空行 with open("test.csv", newline='') as file: # 显式指定分隔符为分号 reader = csv.reader(file, delimiter=';') my_list = list(reader) print(my_list) - 若文件用空格分隔字段(和你贴的原始文件内容预览匹配):
注意如果直接指定delimiter=' ',连续的多个空格会被识别为空字段,需要配合skipinitialspace=True参数跳过字段前的多余空格,适配不规则空格分隔的场景:import csv with open("test.csv", newline='') as file: reader = csv.reader(file, delimiter=' ', skipinitialspace=True) my_list = list(reader) print(my_list)
调整后运行的输出就完全匹配你期望的结构:
[['a', 'b', 'c', 'd'], ['1', '10', '100', '1000'], ['2', '20', '200', '2000'], ['3', '30', '300', '3000'], ['4', '40', '400', '4000'], ['5', '50', '500', '5000']]
小提示: 部分非英文系统生成的CSV文件会默认用分号代替逗号当分隔符,这是行业常见的兼容问题,读取的时候先确认文件实际的分隔符再配置参数,就不会出现整行不拆分的情况。
内容的提问来源于stack exchange,提问作者Jukerano
相关产品推荐
相关产品推荐

