我有一个简单的数据集可以解析如下所示的行:
R1 (a/30) to R2 (b/30), metric 30
我需要的唯一数据如下:
R1, a, 30, R2, 192.168.0.2, 30, 30
我可以通过pyparsing轻松解析所有这些,但我要么在输出中得到一堆文字,要么我必须在我的解析语法中特别说Literal(thing).suppress()
,这很烦人。
理想情况下,我想为上面写一个语法,如:
Word(alphanums) + '(' + Word(alphanums) + '/' + Word(nums) + ... etc.
并且忽略了文字标记。我可以说.suppressAllLiterals()
吗?
注意:
谢谢!
答案 0 :(得分:2)
您可以在ParserElement
上使用此方法 - 在导入pyparsing后立即调用它:
from pyparsing import ...whatever...
ParserElement.inlineLiteralsUsing(Suppress)
现在,解析器中的所有字符串文字都将包含在Suppress
个对象中,而不是默认的Literal
。
(我可能会在v3.0中将其设为默认值,有一天,当我可以破坏向后兼容性时。)