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
Freigeben: 2024-11-03 11:47:29
Original
456 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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]
Nach dem Login kopieren

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>
Nach dem Login kopieren

Dies wird zurückgegeben :

[[['12', '+', '2'], '+', '3']]
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage