列表索引超出范围错误,包含字符串的列表

时间:2014-10-06 18:43:26

标签: python list indexing binary

我有一个名为headers的列表列表。每个子列表中包含的数据都是二进制的。

标题[5] = ['t \ x04 \ x1e \ x01I \ x1a \ t \ x11 \ x02Rz \ x7fI \ x00H:\ x00 \ x1a \ x13I \ x1aOEH \ x0f \ x1d \ rS \ x04']

当我有一个列表如l = [“hello”,1,22,“ex”]时,我可以使用l [0] [2]来访问元素'l'。

类似地,当我想访问列表头[5]中包含的二进制数据的第n个字节时,我得到一个列表索引超出范围错误。如何访问此列表标题中的第n个字节[5]?

我的目标是通过将文件拆分为'keysize'长度字节,从文件对象'text'中的给定二进制数据创建列表列表。

之后,我想将所有列表的第一个字节放入列表'nheads'中的新列表,将所有'head'列表中的第二个字节放入nheads,依此类推。

我的部分代码是:

parti = len(text)/keysize 
headers = [[] for k in range(0, parti)]
nheads = [[] for k in range(0, parti)]
pcount = 0
for i in xrange(0,parti):
    if (pcount < len(text)):
        headers[i].append(text[i*keysize:(i+1)*keysize])
        pcount += 1
    else :
        pcount += 1

print headers[5][2]
count = 0
for i in xrange(0,parti):
    for j in xrange(0,parti):
        if(count < len(text)):
            nheads[i].append(headers[j][i])
            count = count + 1
        else:
            count = count + 1

我得到的错误是:

utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py 
['t\x04\x1e\x01I\x1a\t\x11\x02Rz\x7fI\x00H:\x00\x1a\x13I\x1aOEH\x0f\x1d\rS\x04']
Traceback (most recent call last):
File "6.py", line 65, in <module>
nheads[i].append(headers[j][i])
IndexError: list index out of range
utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py 
Traceback (most recent call last):
File "6.py", line 60, in <module>
print headers[5][2]
IndexError: list index out of range

2 个答案:

答案 0 :(得分:0)

两种可能性: 1.头部列表未正确初始化,因此其长度小于6。 2. n大于头部长度[5]。 尝试打印(str(head [5]))。如果发生错误,则情况1,否则情况2。 也按顺序尝试len(head)和len(head [5])。

答案 1 :(得分:0)

由于列表是列表列表,因此您使用的第二个元素选择器是选择包含列表中的元素,而不是二进制字符串中的字节元素。

尝试&#34;头[5] [0] [n]&#34;而不是&#34; head [5] [n]&#34;。