我想將'pyparsing'解析結果作爲字典發佈,而不需要後期處理。爲此,我需要定義我自己的關鍵字符串。以下最好的我可以拿出,產生預期的結果。在pyparsing中,如何分配「不匹配」鍵值?
線解析:
%ADD22C,0.35X*%
代碼:
import pyparsing as pyp
floatnum = pyp.Regex(r'([\d\.]+)')
comma = pyp.Literal(',').suppress()
cmd_app_def = pyp.Literal('AD').setParseAction(pyp.replaceWith('aperture-definition'))
cmd_app_def_opt_circ = pyp.Group(pyp.Literal('C') +
comma).setParseAction(pyp.replaceWith('circle'))
circular_apperture = pyp.Group(cmd_app_def_opt_circ +
pyp.Group(pyp.Empty().setParseAction(pyp.replaceWith('diameter')) + floatnum) +
pyp.Literal('X').suppress())
<the grammar for the entire line>
結果是:
['aperture-definition', '20', ['circle', ['diameter', '0.35']]]
我認爲這裏一個黑客是
pyp.Empty().setParseAction(pyp.replaceWith('diameter'))
它總是匹配並且是空的,但是隨後我將所需的密鑰名稱分配給它。
這是最好的方法嗎?我是否濫用pyparsing來做一些它並不意味着做的事情?
我*不要*使用該破解其他地方更多的價值,如'locator'在這個答案美化解析的標記:http://stackoverflow.com/questions/18706631/pyparsing,得到令牌定位功能於結果的名稱/ 18709082#18709082。但是,爲了能夠按名稱訪問已分析的數據項,請使用結果名稱,正如@Thales MG所述。 – PaulMcG