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

2024-06-16 10:09:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份名单叫标题。The每个子列表中包含的数据都是二进制的。在

页眉[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]?在

我的目标是从文件对象“text”中给定的二进制数据创建一个列表列表,方法是将文件拆分为“keysize”长度的字节。在

之后,我想把所有列表的第一个字节放入列表“nheads”中的新列表中,将所有“heads”列表的第二个字节放入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

我得到的错误是:

^{pr2}$

Tags: 数据textin列表forlen字节count
2条回答

由于list是一个列表列表,所以您使用的第二个元素选择器选择的是包含列表中的元素,而不是二进制字符串中的byte元素。在

试着用“heads[5][0][n]”代替“heads[5][n]”。在

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

相关问题 更多 >