将csv_reader对象转为list时,为何每个数据列表后都跟空列表?
为什么用list()转换csv_reader后每个数据列表后都跟着空列表?
我尝试使用list()函数将csv_reader对象转换为列表,打印后发现结果中每个数据列表后都跟着一个空列表。
复现代码:
import csv with open('data.csv') as file: reader = csv.reader(file) print(list(reader))
执行结果:
[['trs_id', 'prd_id', 'prc'], [], ['1000', '1', '15'], [], ['1001', '2', '25'], []]
原因分析
这是因为你的data.csv文件里,每行有效数据后面都存在空行(甚至文件末尾可能也有多余的换行)。csv.reader读取文件时,会把没有任何字段的空行解析成空列表,最终就出现了有效数据列表和空列表交替的结果。
比如你的csv文件内容大概率是这样的:
trs_id,prd_id,prc 1000,1,15 1001,2,25
解决办法
可以在读取时过滤掉空列表,只保留非空的行数据:
import csv with open('data.csv') as file: reader = csv.reader(file) # 过滤空行对应的空列表 filtered_data = [row for row in reader if row] print(filtered_data)
执行后结果会变成:
[['trs_id', 'prd_id', 'prc'], ['1000', '1', '15'], ['1001', '2', '25']]
内容的提问来源于stack exchange,提问作者saraslhshr
相关产品推荐
相关产品推荐

