python3中字符串的字典式操作

2024-09-23 14:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串product: Netatalk version: 2.2.0 extrainfo: name: WNDR4500; protocol 3.3 ostype: Unix,在这里我想能够对其执行类似字典的操作,以获取产品、版本等内容。执行此类操作的最佳方法是什么?我知道我可以用拆分和类似的方法来解决这个问题,但这并不是一种“漂亮”的编码方式。有什么建议吗


Tags: 方法字符串name版本内容字典产品version
2条回答

我自己解决了:

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

这将返回“产品”,并可以调整,如果我需要其他东西

我试着写一个递归dict解析器,但它一直在踢我的屁股,直到我想你知道,如果我倒过来做会容易得多<瞧

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

相关问题 更多 >