在 PyParsing 中,如何在 delimitedList 上设置 ParseAction 以将其转换为 Python 列表
In PyParsing, how to setParseAction on a delimitedList to convert it to a Python list
我正在尝试使用 PyParsing 提取 delimitedString
作为列表,如下所示:
from pyparsing import *
string = "arm + mips + x86"
pattern = delimitedList(Word(printables), delim="+")("architectures")
result = pattern.parseString(string)
print(dict(result))
问题是这会打印
{'architectures': (['arm', 'mips', 'x86'], {})}
这是ParseResult
的字符串表示。但是,我希望结果是 Python 列表:
{'architectures': ['arm', 'mips', 'x86']}
我研究过使用 setParseAction
来实现这一点,但我无法弄清楚如何使用该方法的 API 来实现这一点。我实际上想将 list()
应用于整个 ParseResult
,但 setParseAction
函数必须将原始字符串、位置和标记作为输入(参见 http://pyparsing.wikispaces.com/HowToUsePyparsing) .
如何 post 处理结果使其成为列表?
转换为答案 PaulMcG 的评论,result.asDict()
产生了期望的结果。
我正在尝试使用 PyParsing 提取 delimitedString
作为列表,如下所示:
from pyparsing import *
string = "arm + mips + x86"
pattern = delimitedList(Word(printables), delim="+")("architectures")
result = pattern.parseString(string)
print(dict(result))
问题是这会打印
{'architectures': (['arm', 'mips', 'x86'], {})}
这是ParseResult
的字符串表示。但是,我希望结果是 Python 列表:
{'architectures': ['arm', 'mips', 'x86']}
我研究过使用 setParseAction
来实现这一点,但我无法弄清楚如何使用该方法的 API 来实现这一点。我实际上想将 list()
应用于整个 ParseResult
,但 setParseAction
函数必须将原始字符串、位置和标记作为输入(参见 http://pyparsing.wikispaces.com/HowToUsePyparsing) .
如何 post 处理结果使其成为列表?
转换为答案 PaulMcG 的评论,result.asDict()
产生了期望的结果。