ホームページ > バックエンド開発 > Python チュートリアル > PyParsing を使用して Python でネストされた括弧を照合して抽出するにはどうすればよいですか?

PyParsing を使用して Python でネストされた括弧を照合して抽出するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-02 06:43:29
オリジナル
725 人が閲覧しました

How Can I Match and Extract Nested Parentheses in Python Using PyParsing?

Python: ネストされた括弧と正規表現のマッチング

ネストされた括弧のマッチングは、数式を扱うときの一般的なタスクです。ただし、正規表現を使用すると、ネストされた構造の処理に関して制限が生じます。これを re.compile('(. )') で解決しようとしたかもしれませんが、それは最も外側の括弧だけをキャプチャします。正規表現を使用する代わりに、より適切なアプローチは、複雑なテキスト構造を解析するために特別に設計されたライブラリである PyParsing を使用することです。 PyParsing は再帰的解析手法を利用して、ネストされた構造を効率的に処理できるようにします。

PyParsing を使用した例を次に示します。

これは 2 つの要素を定義します: thecontent、英数字、' ' と一致します。 、「-」、および括弧。括弧で囲まれたネストされた式を表します。

使用例

<code class="python">import pyparsing

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>
ログイン後にコピー

これを使用するには、次の例に従います。

期待される出力:

<code class="python">parens.parseString("((a + b) + c)")</code>
ログイン後にコピー

リスト形式でのデータの抽出

ネストされたリストを抽出したい場合は、以下を使用できます:
<code class="text">(
  [
    (
      ['a', '+', 'b'], {}
    ),
    '+',
    'c'
  ], {}
)</code>
ログイン後にコピー

出力:

<code class="python">res = parens.parseString("((12 + 2) + 3)")
res.asList()</code>
ログイン後にコピー
PyParsing を利用すると、複雑なテキスト構造内でネストされた括弧を効果的に照合して抽出できます。

以上がPyParsing を使用して Python でネストされた括弧を照合して抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート