Python – Ersetzen von Mustern im Text mithilfe von Regex

Regulärer Ausdruck (regex) ist dazu gedacht, die erforderlichen Informationen aus jedem Text zu extrahieren, der auf Mustern basiert. Sie werden auch häufig zur Bearbeitung musterbasierter Texte verwendet, was zu einer Textvorverarbeitung führt, und sind sehr hilfreich bei der Implementierung digitaler Fähigkeiten wie z Verarbeitung natürlicher Sprache (NLP) .

In diesem Artikel wird anhand mehrerer Beispiele veranschaulicht, wie Regex zum Ersetzen von Mustern verwendet wird, wobei jedes Beispiel ein einzigartiges Szenario für sich darstellt. Es ist sehr wichtig, das zu verstehen re.sub()> Methode von re> (regulärer Ausdruck) Modul, um die gegebenen Lösungen zu verstehen.

Der re.sub()> Die Methode führt eine globale Suche und ein globales Ersetzen für die angegebene Zeichenfolge durch. Es wird zum Ersetzen eines bestimmten Musters in der Zeichenfolge verwendet. Es gibt insgesamt 5 Argumente dieser Funktion.

Syntax: re.sub(Muster, Replik, Zeichenfolge, Anzahl=0, Flags=0)

Parameter:
Muster – das Muster, das gesucht und ersetzt werden soll
repl – die Zeichenfolge, durch die das Muster ersetzt werden soll
string – der Name der Variablen, in der das Muster gespeichert ist
count – Anzahl der Zeichen, bis zu denen die Ersetzung durchgeführt wird
Flags – werden verwendet, um die Bedeutung des Regex-Musters zu ändern

count> Und flags> sind optionale Argumente.

Beispiel 1: Ersetzung eines bestimmten Textmusters
In diesem Beispiel wird ein bestimmtes Textmuster gesucht und in einer Zeichenfolge ersetzt. Die Idee ist, die ganz normale Form von zu verwenden re.sub()> Methode mit nur den ersten 3 Argumenten.

Nachfolgend finden Sie die Implementierung.




# Python implementation of substituting a> # specific text pattern in a string using regex> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence1> => 'It is raining outside.'> > > # replacing text 'raining' in the string> > # variable sentence1 with 'sunny' thus> > # passing first parameter as raining> > # second as sunny, third as the> > # variable name in which string is stored> > # and printing the modified string> > print> (re.sub(r> 'raining'> ,> 'sunny'> , sentence1))> > > # a string variable> > sentence2> => 'Thank you very very much.'> > > # replacing text 'very' in the string> > # variable sentence2 with 'so' thus> > # passing parameters at their> > # appropriate positions and printing> > # the modified string> > print> (re.sub(r> 'very'> ,> 'so'> , sentence2))> > # Driver Code:> substitutor()>

Ausgabe:

 It is sunny outside. Thank you so so much. 

Egal wie oft das erforderliche Muster in der Zeichenfolge vorhanden ist, das re.sub()> Die Funktion ersetzt alle durch das angegebene Muster. Aus diesem Grund werden im obigen Beispiel beide Wörter „sehr“ durch „so“ ersetzt.

Beispiel 2: Ersetzen eines Zeichensatzes durch ein bestimmtes Zeichen
Die Aufgabe besteht darin, einen Zeichensatz durch ein bestimmtes Zeichen zu ersetzen. Unter einem Zeichensatz versteht man eine Reihe von Zeichen. Im re.sub()> Methode wird ein Zeichensatz in [ ] geschrieben (eckige Klammern).

In diesem Beispiel wird der Kleinbuchstaben-Zeichensatz, also [a-z], durch die Ziffer 0 ersetzt. Nachfolgend finden Sie die Implementierung.




# Python implementation of substituting> # a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => '22 April is celebrated as Earth Day.'> > > # replacing every lower case characters> > # in the variable sentence with 0 and> > # printing the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence))> > # Driver Code:> substitutor()>

Ausgabe:

 22 A0000 00 0000000000 00 E0000 D00. 

Wenn sowohl Klein- als auch Großbuchstaben ersetzt werden müssen, müssen wir den Großbuchstaben-Zeichensatz auf folgende Weise einführen: [a-zA-Z] oder die Wirksam Die Möglichkeit besteht darin, Flags zu verwenden.

Beispiel 3: Ersetzen eines Zeichensatzes durch ein bestimmtes Zeichen ohne Berücksichtigung der Groß-/Kleinschreibung
In diesem Beispiel werden sowohl Klein- als auch Großbuchstaben durch das angegebene Zeichen ersetzt. Mit Hilfe von Flaggen , kann diese Aufgabe sehr einfach durchgeführt werden.

Der re.I> Flagge steht für re. FALL IGNORIEREN . Durch die Einführung dieser Flagge in der re.sub()> Methode und Angabe eines beliebigen Zeichensatzes, d. h. Klein- oder Großbuchstaben, kann die Aufgabe abgeschlossen werden.

Nachfolgend finden Sie die Implementierung.




# Python implementation of case-insensitive substitution> # of a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => '22 April is celebrated as Earth Day.'> > > # replacing both lowercase and> > # uppercase characters with 0 in> > # the variable sentence by using> > # flag and printing the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence, flags> => re.I))> > # Driver Code:> substitutor()>

Ausgabe:

 22 00000 00 0000000000 00 00000 000. 

Beispiel 4: Ersetzung bis zu einer bestimmten Anzahl von Zeichen durchführen
In diesem Beispiel erfolgt die Ersetzung bis zu einer bestimmten Anzahl von Zeichen und nicht für die gesamte Zeichenfolge. Um diese Art der Substitution durchzuführen, muss der re.sub()> Methode hat ein Argument count> .

Durch die Angabe eines numerischen Werts für dieses Argument kann die Anzahl der Zeichen gesteuert werden, bei denen die Ersetzung erfolgt. Nachfolgend finden Sie die Implementierung.




# Python implementation to perform substitution> # up to a certain number of characters> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => 'Follow your Passion.'> > > # case-insensitive substitution> > # on variable sentence upto> > # eight characters and printing> > # the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence,> 8> , flags> => re.I))> > # Driver Code:> substitutor()>

Ausgabe:

 000000 00ur Passion. 

Beispiel 5: Ersetzung mithilfe der Kurzzeichenklasse und Vorverarbeitung von Text
Das Regex-Modul stellt viele Kurzzeichenklassen für die Zeichensätze bereit, die bei der Vorverarbeitung von Text sehr häufig vorkommen. Die Verwendung der Kurzzeichenklasse führt zu einem effizienten Schreiben von Code und verringert die Notwendigkeit, sich den Bereich jedes Zeichensatzes zu merken.

Um eine ausführliche Erklärung der Kurzschriftzeichenklasse und das Schreiben regulärer Ausdrücke in Python zur Vorverarbeitung von Text zu erhalten, klicken Sie auf Hier . Im Folgenden sind einige der am häufigsten verwendeten Kurzzeichenklassen aufgeführt:

w: entspricht alphanumerischen Zeichen
W: Entspricht nicht-alphanumerischen Zeichen wie @, #, ‘, +, %, –
d: Entspricht Ziffernzeichen
s: entspricht Leerzeichen

Bedeutung einiger Syntax:
Hinzufügen eines Pluszeichens (+) nach einer Zeichenklasse oder einem Zeichensatz: Wiederholung der vorhergehenden Zeichenklasse oder eines Zeichensatzes mindestens einmal oder mehrmals.

Hinzufügen eines Sternchens (*) nach einer Zeichenklasse oder einem Zeichensatz: Wiederholung der vorhergehenden Zeichenklasse oder eines Zeichensatzes für mindestens 0 oder mehrere Male.

Hinzufügen eines Caret-Symbols (^) vor einer Zeichenklasse oder einem Zeichensatz: Die passende Position wird für diese Zeichenklasse oder diesen Zeichensatz am Anfang der Zeichenfolge bestimmt.

Hinzufügen eines Dollarsymbols ($) nach einer Zeichenklasse oder einem Zeichensatz: Die passende Position wird für diese Zeichenklasse oder diesen Zeichensatz am Ende der Zeichenfolge bestimmt.

Dieses Beispiel demonstriert die Verwendung der genannten Kurzzeichenklassen für die Ersetzung und Vorverarbeitung von Text, um saubere und fehlerfreie Zeichenfolgen zu erhalten. Nachfolgend finden Sie die Implementierung.




# Python implementation of Substitution using> # shorthand character class and preprocessing of text> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # list of strings> > S> => [> '2020 Olympic games have @# been cancelled'> ,> > 'Dr Vikram Sarabhai was +%--the ISRO’s first chairman'> ,> > 'Dr Abdul Kalam, the father of India's missile programme'> ]> > > # loop to iterate every element of list> > for> i> in> range> (> len> (S)):> > > # replacing every non-word character with a white space> > S[i]> => re.sub(r> 'W'> ,> ' '> , S[i])> > > # replacing every digit character with a white space> > S[i]> => re.sub(r> 'd'> ,> ' '> , S[i])> > > # replacing one or more white space with a single white space> > S[i]> => re.sub(r> 's+'> ,> ' '> , S[i])> > > # replacing alphabetic characters which have one or more> > # white space before and after them with a white space> > S[i]> => re.sub(r> 's+[a-z]s+'> ,> ' '> , S[i], flags> => re.I)> > > # substituting one or more white space which is at> > # beginning of the string with an empty string> > S[i]> => re.sub(r> '^s+'> , '', S[i])> > > # substituting one or more white space which is at> > # end of the string with an empty string> > S[i]> => re.sub(r> 's+$'> , '', S[i])> > > # loop to iterate every element of list> > for> i> in> range> (> len> (S)):> > > # printing each modified string> > print> (S[i])> > # Driver Code:> substitutor()>

Ausgabe:

 Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme