在python中将值解压缩为多个变量

时间:2014-06-23 14:28:39

标签: python unpack

下面的代码有效。但是,我不能重新创建它/不理解它。有人可以帮助编写所有行来完成代码。

value = #something
var1, var2 =  unpack("b8s",value)

这意味着,这里有一个值被放入两个变量中。有人可以举个例子,它有可能吗? 非常感谢提前。

4 个答案:

答案 0 :(得分:4)

你通过完全循环来复杂化它。

var1, var2 = tuple

这只是你可以在python中做的语法。请注意,您必须解压缩整个元组;左侧的变量数必须等于元组中的值数。


实施例

myTuple = ("hi","i","am","tuple")
first,second,third,fourth = myTuple
print first
>>hi
print second
>>i
print third
>>am
print fourth
>>tuple

不允许

myTuple = ("hi","i","am","tuple")
first,second = myTuple
>>Exception

答案 1 :(得分:2)

unpack方法来自struct模块,它允许您将Python字符串视为压缩二进制数据。 unpack('b8s', value)调用告诉unpackvalue视为包含一个无符号字符(using 'b')的二进制字符串,将其作为char的整数值解压缩,然后通过char[8](使用'8s'),表示长度为8的char字符串。它将作为Python字符串解压缩。所以一个完整的例子看起来像这样:

>>> from struct import unpack
>>> s = "abcdefgty"
>>> int_char, my_str = unpack("b8s", s)
>>> print int_char
97  # 97 is the ascii code of 'a'
>>> print my_str
bcdefgty

答案 2 :(得分:0)

如果你有一个元组

t = (1, 2, "a")

你可以像这样解压缩它:

a, b, c = t
print "a=", a

打印

  

a = 1

答案 3 :(得分:0)

正在发生的事情是:unpack处理elem的内容并返回包含2个项目的元组。每个项目都分配给一个不同的变量。

它是一样的:

unpacked_value =  unpack("b8s",elem)
var1 = unpacked_value[0]
var2 = unpacked_value[1]

使用diffentd值和变量:

my_tuple = (1, 2)
var1, var2 = my_tuple
print var1 #outputs 1
print var2 #outputs 2