python中csv模块读取reader只能读取一次

新手上路,请多包涵

各位好,请问python读取csv文件时只能读取一次是为什么
现在有一个csv文件 大概是这个样子
图片描述

现在对ID和length进行读取

import csv

with open('ccc.csv','r')as file:
    reader = csv.reader(file)
    ids = [low[0] for low in reader]
    value = [low[1] for low in reader]

print ('ids',ids)
print ('value',value)

结果第value列表为空
ids ['ID', 'ID=cds0', 'ID=cds1', 'ID=cds2', 'ID=cds3', 'ID=cds4', 'ID=cds5', 'ID=cds6', 'ID=cds7', 'ID=cds8', 'ID=cds9', 'ID=cds10', 'ID=cds11', 'ID=cds12', 'ID=cds13', 'ID=cds14', 'ID=cds15', 'ID=cds16', 'ID=cds17', 'ID=cds18', 'ID=cds19', 'ID=cds20', 'ID=cds21', 'ID=cds22', 'ID=cds23', 'ID=cds24', 'ID=cds25', 'ID=cds26', 'ID=cds27', 'ID=cds28', 'ID=cds29', 'ID=cds30']
value []

只能写 读取所有行数形成列表才能够赋给value的值

import csv

id_list = []
value_list = []
with open('ccc.csv','r')as file:
    reader = csv.reader(file)
    lows = [low for low in reader]
    ids = [low[0] for low in lows]
    value = [low[1] for low in lows]

print ('ids',ids)
print ('value',value)

才可以正常打印
ids ['ID', 'ID=cds0', 'ID=cds1', 'ID=cds2', 'ID=cds3', 'ID=cds4', 'ID=cds5', 'ID=cds6', 'ID=cds7', 'ID=cds8', 'ID=cds9', 'ID=cds10', 'ID=cds11', 'ID=cds12', 'ID=cds13', 'ID=cds14', 'ID=cds15', 'ID=cds16', 'ID=cds17', 'ID=cds18', 'ID=cds19', 'ID=cds20', 'ID=cds21', 'ID=cds22', 'ID=cds23', 'ID=cds24', 'ID=cds25', 'ID=cds26', 'ID=cds27', 'ID=cds28', 'ID=cds29', 'ID=cds30']
value ['length', '768', '4296', '1560', '1359', '1170', '1092', '468', '894', '696', '1980', '1605', '1548', '1389', '414', '1467', '1428', '1680', '999', '2151', '300', '225', '372', '462', '1014', '1212', '774', '1896', '2571', '1011', '582', '1635']

很奇怪,按理说如果不可以的话全部都不可以了。为什么呢?

阅读 8.6k
2 个回答

因为是生成器(generator)
reader里面的东西只会读一次,读过后就删掉,是为了内存考虑。

with open('mytable.csv', r') as f:
    reader = csv.reader(f)
    ids, values = zip(*reader)
    
print(ids)
print(values)

或者你可以试试 pandas 的 read_csv

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题