PyParsing:是否有可能全局压制所有文字?

时间:2016-04-05 14:03:56

标签: literals pyparsing

我有一个简单的数据集可以解析如下所示的行:

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

注意:

  • PyParsing的新手
  • 我已阅读过文档和5或6个示例
  • 搜索谷歌

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

现在,解析器中的所有字符串文字都将包含在Suppress个对象中,而不是默认的Literal

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