我有以下文件:
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 :(得分: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')]