gpt4 book ai didi

python - 解析此序列的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 21:58:56 26 4
gpt4 key购买 nike

我得到一个这样的字符串

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

并且必须得到这样的结果
EXAMPLETEST
EXAMPLEANOTHERPART1
EXAMPLEANOTHERPART2
EXAMPLEUNLIMITEDPOSSIBILITIESLIKE
EXAMPLEUNLIMITEDPOSSIBILITIESTHIS

因为可能有无限量的嵌套,所以我很难记住之前的部分。你能指出我正确的方向吗?

非常感谢

最佳答案

目标:把它变成一个字典。然后从字典中创建您的输出。

>>> string = "EXAMPLE{TEST;ANOTHER{PART1;PART2};UNLIMITED{POSSIBILITIES{LIKE;THIS}}}"
>>> string = string.replace(";", ",").replace("{", ": {")
>>> string
'EXAMPLE: {TEST,ANOTHER: {PART1,PART2},UNLIMITED: {POSSIBILITIES: {LIKE,THIS}}}'
EXAMPLE , TEST , ANOTHER是字符串,但没有用引号括起来 ""'' .

使用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

关于python - 解析此序列的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60719198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com