2011-02-04 8 views
0

私は(ファイルを分割した後)第八列でリストをソートしようとしているが、私はこのエラーを取得しておいてください。「ベース10と)(int型のリテラル無効」整数を並べ替えしようとしているが、取得エラー

ValueError: invalid literal for int() with base 10: '72912,' 
ここで

は私が並べ替えしようとしている私のリストです:

UDP outside 192.168.30.33:1046 inside 192.168.84.28:161, idle 0:00:18, bytes 72912, flags 
TCP outside 192.168.120.26:1339 inside 192.168.84.17:445, idle 5:29:24, bytes 19305, flags 
TCP outside 192.168.120.26:1271 inside 192.168.84.161:139, idle 5:29:41, bytes 4346, flags 
TCP outside 192.168.120.60:1955 inside 192.168.84.100:445, idle 3:56:40, bytes 259388, flags 
TCP outside 192.168.120.60:1951 inside 192.168.84.17:445, idle 3:56:40, bytes 257120, flags 
TCP outside 192.168.120.60:1940 inside 192.168.84.161:139, idle 3:56:57, bytes 260372, flags 
TCP outside 192.168.120.49:1324 inside 192.168.84.161:445, idle 5:04:12, bytes 2705, flags 

ここに私のPythonスクリプトがあります:

lines = open("home/file.txt", "r").readlines() 
lines = [x.split() for x in lines] 
lines.sort(cmp, key=lambda x:int(x[8]), reverse=True) 
for i in lines: 
    print i 

すべてのヘルプは本当にappreciですこれでated ...

答えて

4

整数に変換しようとする前に、削除する必要がある列に後続のカンマがあります。

lines.sort(cmp, key=lambda x:int(x[8][:-1]), reverse=True) 

違いがあります。

In [1]: foo = '72912,' 
In [2]: int(foo) 
ValueError: invalid literal for int() with base 10: '72912,' 

In [3]: int(foo[:-1]) 
Out[3]: 72912 
+0

を試してみてください!!ありがとう! – briandowd

+0

ニース。説明をありがとう。 – briandowd

2

intに変換しようとしている番号には「、」が付きます。だから、あなたのコードではなく、

lines.sort(cmp, key=lambda x:int(x[8]), reverse=True) 

はそれが速かったうわー

lines.sort(cmp, key=lambda x:int(x[8].strip(',')), reverse=True) 
+0

シンタックスエラーを返します。 - 行内のiについて: ^ SyntaxError:無効な構文 – briandowd

+0

int call had a)missing。それを加えた。それをした –

+0

。どうもありがとう!!! – briandowd

関連する問題