我需要撰寫一個python腳本(我是新手,python但想實踐一下)來決議以下格式的訊息:
T:L:x1:x2:x3:...T1:L1:y1:y2:y3...Tn:Ln:z1:z2:z3:...
其中T包含型別,L是長度,x1..xn 是 T1-Tn 型別的實際資料。每個字符都用:符號分隔,所有值總是以十六進制表示。
例如:
1:4:a:5:6:7:2:10:72:75:63:6f:6e:74:72:6f:6c:6c:65:72:2e:6f:72:67
(Type1=1, Length1=4, Type2=2, Length2=16 (10 in hex))
決議后的訊息應該存盤在字典中(我認為這是最合適的資料結構,但我很高興聽到其他一些建議)。
所以我可能會拆分文本,提取型別和長度,進一步提取L位元組并將它們存盤在dictwithT作為鍵。
- 所以我會運行一個回圈,我如何確定字串的結尾,以便我可以跳出回圈?
- 實際資料(例如 x1-x3...)必須存盤在字典中并
:洗掉。我不知道該怎么做。
我很高興了解決議字串的更有效方法。謝謝!
uj5u.com熱心網友回復:
這樣的事情應該作業:
ss = "1:4:a:5:6:7:2:10:72:75:63:6f:6e:74:72:6f:6c:6c:65:72:2e:6f:72:67".split(":")
d = {}
idx = 0
while idx < len(ss):
key = ss[idx]
idx = 1
length = int(ss[idx])
idx = 1
arr = ss[idx:idx length]
d[key] = arr
idx = length
輸出d:
{'1': ['a', '5', '6', '7'],
'2': ['72', '75', '63', '6f', '6e', '74', '72', '6f', '6c', '6c'],
'65': ['2e', '6f', '72', '67']}
uj5u.com熱心網友回復:
iterator在你的字串上創建一個:
message = '1:4:a:5:6:7:2:10:72:75:63:6f:6e:74:72:6f:6c:6c:65:72:2e:6f:72:67'
code = iter(message.split(':'))
data = {}
for t in code:
l = int(next(code), 16)
d = [next(code) for _ in range(l)]
data[t] = d
輸出:
>>> data
{'1': ['a', '5', '6', '7'],
'2': ['72', '75', '63', '6f', '6e', '74', '72', '6f', '6c', '6c', '65', '72', '2e', '6f', '72', '67']}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342538.html
