2017-09-25 4 views
2

私は、次のファイルがあります:最後の文字列をどのようにして配列に挿入するのですか?

1 0x000 1555106270.959849 0x02b 
0 0x3ff 1555106270.967866 0x02c 
0 0x3fe 1555106270.975882 0x02d 
0 0x3fd 1555106270.983898 0x02e 
0 0x3fc 1555106270.991915 0x02f 
0 0x3fb 1555106270.999931 0x000 
0 0x3fa 1555106271.007947 0x001 
0 0x3f9 1555106271.015964 0x002 
0 0x3f8 1555106271.023980 0x003 
0 0x3f7 1555106271.031997 0x004 
0 0x3f6 1555106271.040013 0x005 
0 0x3f5 1555106271.048029 0x006 

を(それはより多くのラインを持っているかもしれません)。

各行で最後の文字列を取得し、配列に挿入したいと考えています。

私は次のことを試してください。

arr_int = [] 
i = 0 
result_file = open('result.txt', 'r') 
for line in result_file: 
    line.split() 
    arr_int[i] = int(line.split()[-1]) 
    ++i 
print (arr_int[2]) 

私は次のエラーました:

arr_int[i] = int(line.split()[-1]) 
IndexError: list assignment index out of range 
+0

私は空行が多分最後で、どこかにあります++ i' –

+0

i' 'インクリメントしない'これが問題であることをわからないんだけど、? –

+0

@Elliot Roberts-だから何ですか? –

答えて

4

これは、Pythonであるとして、何++iはありませんし、さらに、Pythonは配列の割り当ては、非任意のすることはできませんが存在するインデックス(javascriptとは異なります)。

あなたは2つのことを行う必要があります。まず、appendを使用します。第二に、あなたは(それがベース10ではないとして)int型のベースを指定する必要があります。

arr_int.append(int(line.split()[-1], 16)) 
1

arr_intはそれにあなたがすることはできません、空の配列とインデックスを定義しています。

arr_int.append(int(line.split()[-1])) 
1

割り当ての際にインデックスにアクセスする必要はありません。あなたがCまたはC++からそれらを知っているようにPythonでリストは配列ではありません。

last_words = [] 

with open('result.txt', 'r') as result_file: 
    for line in result_file: 
     last_words.append(int(line.split()[-1]), 16) 

print(last_words[2]) 
0

私はあなたが空の行を打つかもしれないと思います。要素にアクセスする前に、空の行をフィルタ処理してみてください。

with open('result.txt', 'r') as result_file: 
    for line in result_file: 
    if line.split(): 
     arr_int.append(int(line.split()[-1])) 
+0

'IndexError'が実際に空の配列(' arr_int = [] '、その後' arr_int [ i] = ... ')。 –

+0

@StevenRumbalskiあなたは正しいです。私はそれについて考えなかったが、私の答えもその部分を解決した – galaxyan

0

Pythonでは、インプレース割り当てが許可されていません。あなたは代わりに、これを試すことができます。

final_data = [i.strip('\n').split()[-1] for i in open('file.txt')] 
関連する問題