擅长:python、mysql、java
<p>我试着写一个递归dict解析器,但它一直在踢我的屁股,直到我想<em>你知道,如果我倒过来做会容易得多<瞧</p>
<pre><code>import re
def make_dict(s):
# break into list of keys and values
chunks = re.split("\s*(\w+\:)\s*", s)
res = {}
# work backwards in value,key pairs
args = [reversed(chunks)] * 2
for value,key in zip(*args):
key = key.rstrip(':')
if value:
# add to current result-dict
res[key] = value
else:
# start a higher-level result-dict
res = {key: res}
return res
</code></pre>
<p>那么</p>
<pre><code>>>> make_dict("product: Netatalk version: 2.2.0 extrainfo: name: WNDR4500; protocol 3.3 ostype: Unix")
{'extrainfo': {'ostype': 'Unix', 'name': 'WNDR4500; protocol 3.3'},
'version': '2.2.0',
'product': 'Netatalk'}
</code></pre>