0

在这里,我有两行代码在 ipython 中运行在一个大型文本文件上,我之前读入了制表符分隔的值,并且已经按行拆分:

In [30]: data = [(int(e[0]),e[1],e[2],int(e[3])) for e in d.split('\t') for d in dat]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/home/max/verk/data/build/x86_64/bin/ipython in <module>()
----> 1 data = [(int(e[0]),e[1],e[2],int(e[3])) for e in d.split('\t') for d in dat]

ValueError: invalid literal for int() with base 10: 'T'

In [31]: data = [(int(e[0]),e[1],e[2],int(e[3])) for e in (d.split('\t') for d in dat)]

In [32]: len(data)
Out[32]: 173503

In [33]: 

......那么这里发生了什么?为什么第 30 行的代码不起作用,为什么当解决方案似乎与列表理解有关时,错误看起来像是在将字符串转换为 int 时遇到问题?

4

0 回答 0