私は、次のような行を解析するために設定され、単純なデータがあります。次のように私は上から必要なデータだけがある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例
- は
おかげグーグル
こんにちは@Paul、応答に感謝します!私はこれを試しました - それはインラインで使用されている文字列(例えば 'pp.Word(...)+ 'somestring' + pp.Word(...)')で動作しているようです。 この小さな変更は、文法の明快さに多大な助けとなりました。時間をとっていただきありがとうございます。大変感謝しています。 –
もちろん(もちろん、私は "myestring"を "myLiteral"に置き換えた場合には、pp.Literalとしてトークン化されました。 – PaulMcG
抑制されたリテラルを 'Suppress(" blah ")'を使って作成することもできますし、Suppressクラスはリテラルを作成することもできます。あなたは – PaulMcG