logo

Python – Patronen in tekst vervangen met behulp van regex

Reguliere expressie (regex) is bedoeld om de vereiste informatie uit elke tekst te halen die op patronen is gebaseerd. Ze worden ook veel gebruikt voor het manipuleren van op patronen gebaseerde teksten, wat leidt tot tekstvoorverwerking en zijn zeer nuttig bij het implementeren van digitale vaardigheden zoals Natuurlijke taalverwerking (NLP) .

In dit artikel wordt gedemonstreerd hoe u regex kunt gebruiken om patronen te vervangen door meerdere voorbeelden te geven waarbij elk voorbeeld een uniek scenario op zich is. Het is zeer noodzakelijk om dere.sub()>methode vanre>(reguliere expressie) module om de gegeven oplossingen te begrijpen.

Dere.sub()>methode voert globaal zoeken en globaal vervangen uit op de gegeven string. Het wordt gebruikt om een ​​specifiek patroon in de string te vervangen. Er zijn in totaal 5 argumenten voor deze functie.



Syntaxis: re.sub(patroon, repl, string, aantal=0, vlaggen=0)

java connect met mysql

Parameters:
patroon – het patroon dat moet worden gezocht en vervangen
repl – de string waarmee het patroon moet worden vervangen
string – de naam van de variabele waarin het patroon is opgeslagen
count – aantal tekens tot waar vervanging zal worden uitgevoerd
vlaggen – het wordt gebruikt om de betekenis van het regex-patroon te wijzigen

count>En flags>zijn optionele argumenten.

Voorbeeld 1: Vervanging van een specifiek tekstpatroon
In dit voorbeeld wordt een bepaald tekstpatroon doorzocht en in een string vervangen. Het idee is om de heel normale vorm van de te gebruikenre.sub()>methode met alleen de eerste 3 argumenten.

Hieronder vindt u de implementatie.




# 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()>

>

>

Uitgang:

 It is sunny outside. Thank you so so much.>

Ongeacht hoe vaak het vereiste patroon in de string aanwezig is, dere.sub()>functie vervangt ze allemaal door het gegeven patroon. Daarom worden in het bovenstaande voorbeeld beide ‘zeer’ vervangen door ‘zo’.

Voorbeeld 2: Een tekenset vervangen door een specifiek teken
De taak is om een ​​tekenset te vervangen door een bepaald teken. Een tekenset betekent een reeks tekens. In dere.sub()>methode wordt een tekenset tussen [ ](vierkante haakjes) geschreven.

In dit voorbeeld wordt de tekenset in kleine letters, d.w.z. [a-z], vervangen door het cijfer 0. Hieronder vindt u de implementatie.




willekeurige waardegenerator in Java
# 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()>

>

>

Uitgang:

 22 A0000 00 0000000000 00 E0000 D00.>

Als het nodig is om zowel de kleine als de hoofdlettertekenset te vervangen, moeten we de hoofdlettertekenset op deze manier introduceren: [a-zA-Z] of de effectief De manier om dit te doen is door vlaggen te gebruiken.

Voorbeeld 3: Hoofdletterongevoelige vervanging van een tekenset door een specifiek teken
In dit voorbeeld worden zowel kleine letters als hoofdletters vervangen door het opgegeven teken. Met gebruik van vlaggen , kan deze taak heel eenvoudig worden uitgevoerd.

Dere.I>vlag staat voor re. NEGEER ZAAK . Door deze vlag te introduceren in dere.sub()>methode en het vermelden van een willekeurige tekenset, d.w.z. kleine letters of hoofdletters, kan de taak worden voltooid.

Hieronder vindt u de implementatie.




# 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()>

>

>

hoe te converteren naar string
Uitgang:

 22 00000 00 0000000000 00 00000 000.>

Voorbeeld 4: Voer vervanging uit tot een bepaald aantal tekens
In dit voorbeeld zal vervanging plaatsvinden tot een specifiek aantal tekens en niet voor de hele tekenreeks. Om dit type vervanging uit te voeren, moet dere.sub()>methode heeft een argumentcount>.

Door een numerieke waarde aan dit argument te geven, kan het aantal tekens waarop vervanging zal plaatsvinden worden gecontroleerd. Hieronder vindt u de implementatie.




# 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()>

>

>

Uitgang:

 000000 00ur Passion.>

Voorbeeld 5: Vervanging met behulp van een steno-tekenklasse en voorverwerking van tekst
De Regex-module biedt veel steno-tekenklassen voor die tekensets die heel gebruikelijk zijn tijdens de voorverwerking van tekst. Het gebruik van een steno-tekenklasse resulteert in het schrijven van efficiënte code en vermindert de noodzaak om het bereik van elke tekenset te onthouden.

java als anders

Voor een gedetailleerde uitleg van de steno-tekenklasse en hoe u reguliere expressies in Python schrijft voor het voorbewerken van tekst, klikt u op hier . Hieronder volgen enkele van de meest gebruikte steno-tekenklassen:

w: komt overeen met alfanumerieke tekens
W: komt overeen met niet-alfanumerieke tekens zoals @, #, ‘, +, %, –
d: komt overeen met cijfers
s: komt overeen met witruimtetekens

Betekenis van een bepaalde syntaxis:
het toevoegen van een plus(+)-symbool na een tekenklasse of -set: herhaling van de voorgaande tekenklasse of -set gedurende minimaal 1 of meerdere keren.

het toevoegen van een asterisk(*)-symbool na een tekenklasse of -set: herhaling van de voorgaande tekenklasse of set voor minimaal 0 of meer keren.

het toevoegen van een caret(^)-symbool vóór een tekenklasse of -set: de overeenkomende positie wordt bepaald voor die tekenklasse of aan het begin van de tekenreeks.

het toevoegen van een dollar($)-symbool na een tekenklasse of -set: de overeenkomende positie wordt bepaald voor die tekenklasse of wordt ingesteld aan het einde van de tekenreeks.

Dit voorbeeld demonstreert het gebruik van de genoemde steno-tekenklassen voor de vervanging en voorverwerking van tekst om schone en foutloze tekenreeksen te verkrijgen. Hieronder vindt u de implementatie.




# 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()>

>

>

Uitgang:

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