如何获取最后一个字符串,并将其插入数组?

时间:2017-09-25 15:15:42

标签: python arrays for-loop line

我有以下文件:

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

5 个答案:

答案 0 :(得分:4)

因为这是python,没有++i,另外,python不允许将数组赋值给任意不存在的索引(与javascript不同)。

你需要做两件事。首先,使用append。其次,你需要指定int的基数(因为它不是基数10):

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

答案 1 :(得分:1)

arr_int被定义为空数组,因此您无法将其编入索引。请改用append

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

答案 2 :(得分: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])

答案 3 :(得分:0)

我想你可能会排成一排。尝试在访问元素之前过滤掉空行。

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

答案 4 :(得分:0)

Python不允许就地分配。你可以试试这个:

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