PyParsing:是否可以全局抑制所有文字?

PyParsing: Is it possible to globally suppress all Literals?

我有一个简单的数据集,可以使用如下行进行解析:

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() 吗?

备注:

谢谢!

您可以在 ParserElement 上使用此方法 - 在导入 pyparsing 后立即调用它:

from pyparsing import ...whatever...
ParserElement.inlineLiteralsUsing(Suppress)

现在,解析器中的所有字符串文字都将包装在 Suppress 对象中,并排除在结果之外,而不是默认的 Literal.

(我可能会在 v3.0 中将其设为默认值,有一天,当我可以打破向后兼容性时。)