Python解析网络

时间:2012-09-05 22:07:01

标签: python parsing variables

我正在尝试解析传入的数据包,拆分一些值并将它们存储到各自的变量中。

这说明了我正在尝试做的事情:

Incoming = "\x00\x31\x00\x62\x00\x6a\x00\x61\x00\x61\x00\x61\x00\x71\x00\x71"
Incoming+= "\x00\x71\x00\x61\x00\x71\x00\x6a\x00\x71\x00\x00\x00\x55\x00\x4e"
Incoming+= "\x00\x45\x00\x00\x00\x61\x61\x61\x00\x00\x00"

print Incoming
>>> 1bjaaaqqqaqjqUNEaaa

我需要使用的字符串由3个空字节“\ x00 \ x00 \ x00”分隔,所以它应该如下所示:

print Incoming
>>> 1bjaaaqqqaqjq UNE aaa

我需要做的是在var1中存储“1bjaaaqqqaqjq”,在var2中存储“UNE”,在var3中存储“aaa”。

我想的是:

Incoming = "\x00\x31\x00\x62\x00\x6a\x00\x61\x00\x61\x00\x61\x00\x71\x00\x71"
Incoming+= "\x00\x71\x00\x61\x00\x71\x00\x6a\x00\x71\x00\x00\x00\x55\x00\x4e"
Incoming+= "\x00\x45\x00\x00\x00\x61\x61\x61\x00\x00\x00"

pack = list(Incoming)
null = [i for i in range(len(pack)) if pack[i:i+3] == ['\x00','\x00','\x00']] 
for i in null:
   pack[i] = "\n"

print ''.join(pack)
>>>1bjaaaqqqaqjq
   UNE
   aaa

但是我的代码无法将这些值分配给各自的var(var1,var2,var3等)

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

这就是你的意思:

>>> Incoming = "\x00\x31\x00\x62\x00\x6a\x00\x61\x00\x61\x00\x61\x00\x71\x00\x71"
>>> Incoming+= "\x00\x71\x00\x61\x00\x71\x00\x6a\x00\x71\x00\x00\x00\x55\x00\x4e"
>>> Incoming+= "\x00\x45\x00\x00\x00\x61\x61\x61\x00\x00\x00"
>>>
>>> var1, var2, var3 = [e.replace('\x00','') for e in Incoming.split('\x00\x00\x00')[:3]]
>>> print var1, var2, var3
1bjaaaqqqaqjq UNE aaa