2017-09-25 37 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'不增加'i' –

+0

有一個空行的地方,也許在結束了嗎? –

+0

@艾略特羅伯茨 - 那又怎麼樣? –

回答

4

,因爲這是蟒蛇,沒有++i,另外,蟒蛇不允許數組賦值任意非存在的指標(與javascript不同)。

你需要做2件事。首先,使用append。其次,需要以指定的int鹼(因爲它不是基體10):

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

arr_int被定義爲空數組,所以你不能索引進去。改爲使用append

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

您在分配列表期間不需要索引訪問。 python中的列表不是數組,因爲您從C或C++中知道它們:

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,但是IndexError實際上是由OP試圖分配給一個空數組的索引(arr_int = []',然後是'arr_int [我] = ...')。 –

+0

@StevenRumbalski你是對的。我沒有想到,但我的答案也解決了這一部分 – galaxyan

0

Python不允許就地分配。你可以代替試試這個:

final_data = [i.strip('\n').split()[-1] for i in open('file.txt')] 
相關問題