0

ここでは、以前にタブ区切りの値を読み込んで、すでに行ごとに分割されている大きなテキスト ファイルに対して、ipython で 2 行のコードを実行しています。

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