我有一份名单叫标题。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}$
由于list是一个列表列表,所以您使用的第二个元素选择器选择的是包含列表中的元素,而不是二进制字符串中的byte元素。在
试着用“heads[5][0][n]”代替“heads[5][n]”。在
两种可能性: 1头列表未正确初始化,因此其长度小于6。 2n大于头部长度[5]。 尝试打印(str(head[5])。如果发生错误,则情况1为情况2。 也可以依次尝试len(head)和len(head[5])。在
相关问题 更多 >
编程相关推荐