Pyparsingで文法規則一致のソース範囲(開始位置と終了位置)をプログラムで抽出するにはどうすればよいですか? setParseAction
として指定された別のコールバック内の解析ツリーの内容を調べているため、この (サブ) ルールには使用できませんParseAction
。から返された内容を に似た人道的な方法で印刷する機能もありません。認識していますが、コンテキストなどの興味深い情報がこのメンバーによって取り除かれているかどうかはわかりません。pprint
parseString()
toList()
質問する
246 次
1 に答える
3
dump()
解析された式の場所を取得し、解析されたデータと名前付きの結果を一覧表示するために使用する方法を示すサンプル コードを次に示します。
from pyparsing import *
# use an Empty to define a null token that just records its
# own location in the input string
locnMarker = Empty().leaveWhitespace().setParseAction(lambda s,l,t: l)
# define a example expression and save the start and end locations
markedInteger = locnMarker + Word(nums)('value') + locnMarker
# assign named results for the start and end values,
# and pop them out of the actual list of tokens
def markStartAndEnd(s,l,t):
t['start'],t['end'] = t.pop(0),t.pop(-1)
markedInteger.setParseAction(markStartAndEnd)
# find all integers in the source string, and print
# their value, start, and end locations; use dump()
# to show the parsed tokens and any named results
source = "ljsdlj2342 sadlsfj132 sldfj12321 sldkjfsldj 1232"
for integer in markedInteger.searchString(source):
print integer.dump()
版画:
['2342']
- end: 11
- start: 6
- value: 2342
['132']
- end: 22
- start: 18
- value: 132
['12321']
- end: 33
- start: 27
- value: 12321
['1232']
- end: 48
- start: 44
- value: 1232
于 2013-04-24T06:02:48.817 に答える