問題タブ [pyparsing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - pyparsing を使用して、複数のオープナー/クローザー型を持つネストされた式を解析するにはどうすればよいですか?
pyparsing を使用して、フォームの式を解析し、フォームexpr = '(gimme [some {nested [lists]}])'
の python リストを取得したいと思います: [[['gimme', ['some', ['nested', ['lists']]]]]]
。現在、私の文法は次のようになっています。
nestedParens = nestedExpr('(', ')')
nestedBrackets = nestedExpr('[', ']')
nestedCurlies = nestedExpr('{', '}')
囲まれた = nestedParens | ネストされたブラケット | ネストされたカーリー
現在、 enclosed.searchString(expr)
次の形式のリストを返します[[['gimme', ['some', '{nested', '[lists]}']]]]
。角括弧または中括弧を認識していないため、これは私が望むものではありませんが、その理由はわかりません。
python - 演算子の解析の問題
pyparsingで文法をしましたが、問題があります。文法は(演算子の優先順位、括弧などを使用して)検索クエリを解析しようとします。スペースがand演算子のように機能する必要があります。
たとえば、これは正常に機能します。
しかし、これは失敗します:
そして、2番目のクエリを最初のクエリと同じように機能させたいと思います。
私の実際の文法は次のとおりです。
python - pyparsing:特定のテキストを含む文字列を抽出する
私はpyparsingを学ぼうとしています。それは有望で、テキスト処理に使うのが楽しいものに聞こえます。とにかく、ここに私の質問があります:
コース名のリストがあります。例えば、
上記のような微積分に関係するコースをリストから抽出したいと思います。これらは、完全な単語CALCULUSまたは略語CALCを持つコースのいずれかです。まず、これらの単語が大文字でのみ表示されると仮定します(上記の例では小文字の単語があります。今のところそれを無視しましょう)。
私は次のコードを書きました:
私の最初の質問は、pyparsingを使用してこれを行うためのより良い方法があるかどうかです。
今、上記は逃しCalculus II
ます。私は次のように定義することでそれを捕まえることができることを知ってcalc
います:
しかし、これは見逃しcAlc
ます。CALCのすべての小文字と大文字が一致するように文法を指定する方法はありますか?
ご協力ありがとうございました。
pyparsing - pyparsing-単純な行を解析します
この行を完全に解析する方法に頭を悩ませています。「(4801)」の部分で問題が発生しています。他のすべての要素は正常に取得されています。
これは私が今まで持っているものです
編集: ポール、あなたが忍耐力を持っているなら、私はどのようにフィルタリングしますか
Efficiency_bnf.searchString(unparsed_log_data)とreport_and_effic.searchString(unparsed_log_data)はどちらも期待どおりにデータを返しますが、試してみると
report_and_effic = report_bnf + partial_report_ignore + Efficiency_bnf
report_and_effic.searchString(unparsed_log_data)は([]、{})を返します
EDIT2:
コードを読み取る必要があります
。partial_report_ignore= Suppress(SkipTo( "Efficiency"、include = True))
python - pyparsing.ParseResultsをhtml文字列に変換し直します
私はpyparsingを始めたばかりです。
クラスpyparsing.ParseResultsのインスタンスをhtml文字列に戻すにはどうすればよいですか。
元。
したがって、この関数fooが必要です。
助言がありますか ?
python - TCLのようなテキストの解析
次のような構成テキストがあります。
値はプレーン文字列または引用符で囲まれた文字列です。キーは英数字の文字列です。私はそれを前もって知っていてkey2
、key3.subkey1.key4
セットを保持するので、それらのパスを別の方法で扱うことができます。BLOBKEY
同様に、「エスケープされた」構成セクションが含まれることを私は知っています。
目標は、次のような辞書に変換することです。
以下のこのコードは、ネストされたリストの束に分解するのに非常に優れています。
pyparsingを使用してPythonで、必要な結果を得る最良の方法は何ですか?
python - pyparsing の結果をノードのリンク リストに関連付けるパターン
pyparsing
このテキストを構文ツリーに解析するルールを定義しました...
テキストコマンド:
構文ツリー:
上記の構文ツリーのネストされたすべてのキーと値のペアをオブジェクトのリンクリストに関連付けようとしています...階層は次のようになります(各単語はnamedtuple
...階層内の子は両親の子供のリスト):
これらすべての目標は、ネットワーク機器に対するテストの流れを促進し、結果を記録するための汎用テスト データ取得プラットフォームを構築することです。データがこの形式になると、同じデータ構造を使用してテスト レポートが作成されます。以下のコメントの質問に答えるために、リンクされたリストを選択しました。これは、レポートを作成するときに情報を順番にデキューする最も簡単な方法と思われるためです。ただし、テストを完了する前に番号を割り当てIteration
たり、Observation
シーケンス番号を付けたりすることは避けたいと思います...テストの実施中に問題が見つかり、さらに観測を挿入する場合に備えて。私の理論では、リスト内の各要素の位置は十分ですが、それが問題の一部である場合は喜んで変更します。
問題は、作成後にリンク リスト内のオブジェクトに Key-Value を割り当てようとして迷ってしまうことです。たとえばObservation
namedtuple
、最初の に を挿入した後、上記の例Iteration
の の更新を確実に処理するのに問題があります。assign Observation results_bool = True
この状況を処理するための一般化された設計パターンはありますか? 私はこれをしばらくグーグルで検索しましたが、テキストの解析 (私ができること) とデータ階層の管理 (主な問題) の間のリンクを作成できないようです。ハイパーリンクや小さなデモ コードは問題ありません。適切な軌道に乗るためのポインタが必要なだけです。
python - pyparsingでリテラル間のスペースを禁止するにはどうすればよいですか?
文法は拒否する必要がfrom : mary
あり、受け入れる必要がfrom:mary
あります。つまり、インターリーブスペースはありません。pyparsingでこれを強制するにはどうすればよいですか?ありがとう
python - この手法は、pyparsing で ParseResults を構築するために受け入れられますか?
結果の解析ツリー ( pyparsing でParseActions
知られている) を構築しようとすると、コードが少しぎこちなくなる気がします。ParseResults
私が今行っていることは、Group
要素によって返される一致したトークンのグループを格納するグローバル変数を持つことです。toks
最後に、結果を辞書に挿入します。これでよろしいですか ?
私の大ざっぱな文法:
などは任意の順序でインターリーブできることExprA
に注意してください。ExprB
しかし、ParseResults で 1 つのタイプのすべての式を 1 つの辞書エントリにグループ化したいと考えています。私の技術についてどう思いますか?マルチスレッドが問題になるため、グローバル変数を使用するのは好きではありません。他に選択肢はありますか?
python - 私のユースケースでは、なぜpyparsingの順序付けされた選択が失敗するのですか?
scooby
はすでに文字ストリームで消費されているため、パーサーはバックトラックできないため、ParseExceptionがスローされますか?このための詳細な実装の説明を探しています。
現時点では、これはバグだと考えています。これは、パーサーが本番ルールのすべての選択肢を検索していないために、パーサーがマッチングを短絡する理由です。
更新:
演算子と完全MatchFirst
に同等ではないようです。|
なんで ?