字典就像python3中的字符串操作一样

时间:2015-02-08 15:08:41

标签: python string python-3.x dictionary

我有一个字符串product: Netatalk version: 2.2.0 extrainfo: name: WNDR4500; protocol 3.3 ostype: Unix,我希望能够进行类似字典的操作,以获得产品,版本等等。这些操作的最佳方法是什么?我知道我可以用分裂和类似的东西来解决这个问题,但这实际上并不是一种“漂亮”的编码方式。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我尝试写一个递归的字典解析器,它一直在踢我的屁股,直到我想到你知道,如果我倒退了会更容易...... Voila!

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

然后

>>> 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'}

答案 1 :(得分:0)

我设法自己解决了这个问题:

def product(banner):
  if banner:
    p=re.search('(product:).([^\s]+)', banner)
    return p.group(2)
  else:
    return "unknown"

这将返回"产品",如果我需要别的东西,可以进行调整。