2012-09-05 74 views
1

我试图解析一个传入的数据包,拆分一些值并将它们存储到它们各自的变量中。Python解析网络

这说明了什么,我试图做的:

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中存储“1bjaaaqqqqqqq”,在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

难道这就是你的意思是:

>>> 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 
+0

嗨阿兰,感谢您的回答。是的,这正是我正在寻找的。干杯 – user1473508

+0

很高兴我能帮到你。干杯。 – alan