私は以前pyparsing
、テキストの大きなチャンクを解析して、いくつかの数値を取得していました。私が解析しているテキストは次のようなものです。
asdkjh 1 120 203
kajshd 230 2309 2309
Activated Attempts 230 2309 2309
Activated Attempts 230 2309 2309
aksjdh 300
...
文字列を検索し、指定された文字列の直後に続くすべての値をキャッチする必要がありました。私が書いたコードは次のようになり、正常に機能しています。
returnValue= 0
integer = pyparsing.Word(pyparsing.nums).setParseAction(lambda toks: int(toks[0]))
attempted = integer.setResultsName("attempted")
text = "Activated Attempts"
row = text + attempted
table = pyparsing.ZeroOrMore(pyparsing.Group(row) | pyparsing.SkipTo(row).suppress())
attempteds = [row.asDict() for row in table.parseString(self.sendLine("lts_pm p"))]
for attempted in attempteds:
returnValue+= attempted["attempted"]
return returnValue
上記の場合、460が返されます。上記の関数は、指定された「アクティブ化された試行」を検索し、そのテキストが後に続く数値を格納し、数値を要約して返します。
ただし、同じスクリプトにさらに検索クエリを追加する必要があり、次のことを試しました。
text = pyparsing.Keyword("Activated Attempts") or pyparsing.Keyword("Non Attempts")
ただし、スクリプトは「Activated Attempts」のみをキャッチしてその数を返し、2番目のテキストを完全に無視します。Keyword
これでない場合の用途は何ですか?私も試しLiteral
ましたが、それでも成功しませんでした!