Heim >Backend-Entwicklung >Python-Tutorial >Wie können Sie mithilfe regulärer Ausdrücke und Pyparsing verschachtelte Klammern in Python effektiv extrahieren?

Wie können Sie mithilfe regulärer Ausdrücke und Pyparsing verschachtelte Klammern in Python effektiv extrahieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 11:47:29412Durchsuche

How can you effectively extract nested parentheses in Python using regular expressions and pyparsing?

Extraktion verschachtelter Klammern in Python mithilfe von Regex

In Python kann sich das Extrahieren verschachtelter Klammern mithilfe regulärer Ausdrücke als schwierig erweisen. Ein gängiger Ansatz ist die Verwendung der re.compile()-Methode, wie im bereitgestellten Codeausschnitt gezeigt. Diese Methode führt jedoch möglicherweise nicht immer zu den gewünschten Ergebnissen, wenn es um komplexe verschachtelte Konstrukte geht.

Für Situationen mit verschachtelten Klammern bietet ein alternativer Ansatz mit der Pyparsing-Bibliothek mehr Flexibilität. Pyparsing ermöglicht die Erstellung ausgefeilterer Grammatikregeln, wie im Beispiel zu sehen ist:

<code class="python">import pyparsing # make sure you have this installed

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>

Die Funktion nestedExpr() definiert eine Grammatik für den Abgleich verschachtelter Klammern. Es benötigt drei Argumente: die öffnenden und schließenden Klammerzeichen und den Ausdruck, der innerhalb der Klammern abgeglichen werden soll.

Hier ist ein Beispiel für die Verwendung der definierten Grammatik:

<code class="python">>>> parens.parseString("((a + b) + c)")</code>

Die Ausgabe dieser Analyse Die Operation ist eine verschachtelte Listendarstellung des übereinstimmenden Ausdrucks:

(                          # all of str
 [
  (                        # ((a + b) + c)
   [
    (                      #  (a + b)
     ['a', '+', 'b'], {}   
    ),                     #  (a + b)      [closed]
    '+',
    'c'
   ], {}
  )                        # ((a + b) + c) [closed]
 ], {}  
)                          # all of str    [closed]

Um ein verschachteltes Listenformat des übereinstimmenden Ausdrucks zu erhalten, verwenden Sie die Methode asList():

<code class="python">res = parens.parseString("((12 + 2) + 3)")
res.asList()</code>

Dies wird zurückgegeben :

[[['12', '+', '2'], '+', '3']]

Daher können Sie durch die Verwendung der verschachtelten Ausdrucksgrammatik von Pyparsing verschachtelte Klammern innerhalb mathematisch ähnlicher Zeichenfolgen effektiv abgleichen und extrahieren.

Das obige ist der detaillierte Inhalt vonWie können Sie mithilfe regulärer Ausdrücke und Pyparsing verschachtelte Klammern in Python effektiv extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn