2016-11-09 869 views
1

我想帮助将字节转换为字典,我有;Python将字节数组转换为字典

收到消息:b'req:21; num:54771377; INFO:; GATE:N;'

我想

D1 = { 'REQ':21, 'NUM':54771377, 'INFO':, '门':N}

谢谢

+0

你好,你是怎么做是为了这个?你能向我们展示一些代码吗? – tanaydin

回答

1

用gencomp管道插入字典(删除空字段)。根据具有转换的字节串之后到分号分裂(假设:数据字节对象内是ASCII)

s = b"req:21;num:54771377;INFO:;GATE:N;" 
d = dict(toks.split(":") for toks in s.decode("ascii").split(";") if toks) 

print(d) 

结果:

{'INFO': '', 'GATE': 'N', 'req': '21', 'num': '54771377'} 

笔记:

  1. 一个dictcomp将像这样诱惑d = {toks.split(":")[0] : toks.split(":")[1] for toks in s.decode("ascii").split(";") if toks},但这意味着你分裂了两次,因为分号太多

  2. ,如果你有非ASCII数据,你仍然可以做的工作,但该数据将保持为bytesd = dict(toks.split(b":") for toks in s.split(b";") if toks)

+0

Merci Jean-François – Kef

1

像这样的事情?

str = b'req:21;num:54771377;INFO:;GATE:N;'.decode("ascii") 
arr = str.split(';')[::-1] 
arr = [x.split(':') for x in arr if x != ''] 
return dict(arr) 

结果:

{u'INFO': u'', u'GATE': u'N', u'num': u'54771377', u'req': u'21'} 

REPL:https://repl.it/X3G/8284