标签:python list csv list-comprehension
我正在尝试使用CSV阅读器有效地读取文件中的列.代码是:
import csv
csv.register_dialect('csvrd', delimiter='\t', quoting=csv.QUOTE_NONE)
with open('myfile.txt', 'rb') as f:
reader = csv.reader(f,'csvrd')
a0=[x[0] for x in reader]
a1=[x[1] for x in reader]
我获取第一列中的值,但a1为空.如果我先写a1,那么a0是空的.
我知道一个简单的解决方案,插入
reader=[x for x in reader]
但只是好奇的原因.当您从阅读器读取条目时,它是否被删除?
示例myfile.txt
c11 c21 c31
c21 c22 c32
解决方法:
您不能多次循环读取器,而不是再次将基础文件重新启动.
但是,不要这样做;使用zip(* reader)将行转换为列:
a0, a1, a2 = zip(*reader)
演示:
>>> import csv
>>> csv.register_dialect('csvrd', delimiter='\t', quoting=csv.QUOTE_NONE)
>>> data = '''\
... c11\tc21\tc31
... c21\tc22\tc32
... '''
>>> reader = csv.reader(data.splitlines(True), 'csvrd')
>>> a0, a1, a2 = zip(*reader)
>>> a0
('c11', 'c21')
>>> a1
('c21', 'c22')
>>> a2
('c31', 'c32')
标签:python,list,csv,list-comprehension 来源: https://codeday.me/bug/20190722/1507159.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。