Python解包问题

9

我有:

a, b, c, d, e, f[50], g = unpack('BBBBH50cH', data)

问题是

f[50] (too many values to unpack)

我该如何实现自己想要的功能?

2个回答

7
我认为你用 f[50] 的意思是“一个包含50个元素的列表”?
在Python 3.x中,你可以使用a, b, c, d, e, *f, g来表示你希望f包含所有其他位置上无法放置的值(请参见此PEP)。
在Python 2.x中,你需要明确地写出它:
x = unpack(...)
a, b, c, d, e = x[:5]
f = x[5:55]
<etc>

1
很高兴看到Python 3终于支持这种语法,是时候重新学习一门语言了。 - Fred Foo
谢谢。有些库没有移植到3,这让人感到遗憾。 - Jonathan
@Jonathan:确实,尽管越来越多的人正在转移。 - Katriel

0
问题出在解包的50c部分。这会从缓冲区中读取50个字符,并将其作为50个单独的值返回。如果您将其更改为
a, b, c, d, e, f, g = unpack('BBBBH50sH', data)  

f 将是从缓冲区读取的包含50个字符的列表,这正是我所怀疑的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接