开发者社区> 问答> 正文

解析此序列的最佳方法?

我得到这样的字符串

EXAMPLE{TEST;ANOTHER{PART1;PART2};UNLIMITED{POSSIBILITIES{LIKE;THIS}}}

并必须得到这样的结果

EXAMPLETEST
EXAMPLEANOTHERPART1
EXAMPLEANOTHERPART2
EXAMPLEUNLIMITEDPOSSIBILITIESLIKE
EXAMPLEUNLIMITEDPOSSIBILITIESTHIS

因为可能存在无限数量的嵌套,所以在记住以前的部件时遇到了麻烦。你能指出我正确的方向吗?

非常感谢

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 12:24:35 357 0
1 条回答
写回答
取消 提交回答
  • 目标:将其变成命令。然后从字典创建输出。

    >>> string = "EXAMPLE{TEST;ANOTHER{PART1;PART2};UNLIMITED{POSSIBILITIES{LIKE;THIS}}}"
    >>> string = string.replace(";", ",").replace("{", ": {")
    >>> string
    'EXAMPLE: {TEST,ANOTHER: {PART1,PART2},UNLIMITED: {POSSIBILITIES: {LIKE,THIS}}}'
    

    EXAMPLETESTANOTHER是字符串,但没有用引号“”“”``引起来。

    使用RegEx解决此问题:

    >>> import re
    >>> string = re.sub(r"(\w+)", r"'\1'", string)
    >>> string
    "'EXAMPLE': {'TEST','ANOTHER': {'PART1','PART2'},'UNLIMITED': {'POSSIBILITIES': {'LIKE','THIS'}}}"
    

    这仍然不是有效的文件格式。不是JSON。这不是一个命令。它是Python中的dict和set的混合体。 使它看起来更像字典:

    >>> string = re.sub(r"'(\w+)',", r"'\1': None, ", string)
    >>> string = re.sub(r"'(\w+)'}", r"'\1': None}", string)
    >>> string
    "'EXAMPLE': {'TEST': None, 'ANOTHER': {'PART1': None, 'PART2': None},'UNLIMITED': {'POSSIBILITIES': {'LIKE': None, 'THIS': None}}}"
    

    现在将其转换为Python对象:

    >>> my_dict = eval('{' + string + '}')
    >>> my_dict
    {'EXAMPLE': {'TEST': None, 'ANOTHER': {'PART1': None, 'PART2': None}, 'UNLIMITED': {'POSSIBILITIES': {'LIKE': None, 'THIS': None}}}}
    

    现在,您有了一个常规的Python对象,您可以对其进行迭代并进行字符串处理。您可以编写连接字符串的递归函数:

    >>> def create_output(dict_element, result):
    ...     if dict_element == None:
    ...         print(result)
    ...         return
    ...     for key, value in dict_element.items():
    ...         create_output(value, result + key)
    ...
    >>> create_output(my_dict, "")
    EXAMPLETEST
    EXAMPLEANOTHERPART1
    EXAMPLEANOTHERPART2
    EXAMPLEUNLIMITEDPOSSIBILITIESLIKE
    EXAMPLEUNLIMITEDPOSSIBILITIESTHIS
    

    回答来源:stackoverflow

    2020-03-24 12:24:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像