gpt4 book ai didi

python - pyparsing 中的 python 列表(嵌套)解析器是什么样的?

转载 作者:行者123 更新时间:2023-12-05 04:19:09 25 4
gpt4 key购买 nike

我想了解如何使用 pyparsing 来解析类似嵌套 Python 列表的内容。这是一个理解pyparsing的问题。由于示例列表可能看起来像 JSON 或 Python 本身而规避问题的解决方案不应阻止 pyparsing 的使用。

所以在人们开始向我抛出 json 和 literal_eval 之前,让我们考虑一个如下所示的字符串和结果:

Input:
{1,2,3,{4,5}}
Expected Output (Python list):
[1,2,3,[4,5]]

我目前有这段代码,但输出不解析嵌套列表

import pyparsing


print(
pyparsing.delimited_list(
pyparsing.Word(pyparsing.nums) | pyparsing.nested_expr("{", "}")
)
.parse_string("{1,2,3,{4,5}}")
.as_list()
)
# [['1,2,3,', ['4,5']]]

这里已经有几乎相同的问题,但是通过使用 json 解析绕过了这个问题:Python parse comma seperated nested brackets using Pyparsing

最佳答案

您需要使用 Forward reference ,因为你的逻辑是递归的。不可能使用之前未定义的东西,因此 Forward 对象允许您这样做:

expr = pyparsing.Forward()
expr <<= pyparsing.delimited_list(
pyparsing.Word(pyparsing.nums) | pyparsing.nested_expr("{", "}", expr)
)

print(expr.parse_string("{1,2,3,{4,5}}").as_list())
# [['1', '2', '3', ['4', '5']]]

This answer还有另一个如何使用它们的好例子。

关于python - pyparsing 中的 python 列表(嵌套)解析器是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74941717/

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