logo

Python – Bytter ut mønstre i tekst ved å bruke regulært uttrykk

Regular Expression (regex) er ment for å trekke ut nødvendig informasjon fra tekst som er basert på mønstre. De er også mye brukt for å manipulere de mønsterbaserte tekstene som fører til tekstforbehandling og er svært nyttige for å implementere digitale ferdigheter som Naturlig språkbehandling (NLP) .

Denne artikkelen viser hvordan du bruker regulært uttrykk for å erstatte mønstre ved å gi flere eksempler der hvert eksempel er et unikt scenario i seg selv. Det er veldig nødvendig å forståre.sub()>Metode avre>(regulære uttrykk) modul for å forstå de gitte løsningene.

Dere.sub()>metoden utfører globalt søk og global erstatning på den gitte strengen. Den brukes til å erstatte et spesifikt mønster i strengen. Det er totalt 5 argumenter for denne funksjonen.



Syntaks: re.sub(pattern, repl, string, count=0, flags=0)

nulle nuller

Parametere:
mønster – mønsteret som skal søkes og erstattes
repl – strengen som mønsteret skal byttes ut med
streng – navnet på variabelen der mønsteret er lagret
count – antall tegn opp til som substitusjon vil bli utført
flagg - det brukes til å endre betydningen av regex-mønsteret

count>og flags>er valgfrie argumenter.

Eksempel 1: Substitusjon av et spesifikt tekstmønster
I dette eksemplet vil et gitt tekstmønster søkes og erstattes i en streng. Tanken er å bruke den helt normale formenre.sub()>metode med bare de tre første argumentene.

Nedenfor er gjennomføringen.




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

>

>

Produksjon:

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

Uansett hvor mange ganger det nødvendige mønsteret er tilstede i strengenre.sub()>funksjon erstatter alle med det gitte mønsteret. Det er derfor begge 'veldig' er erstattet av 'så' i eksemplet ovenfor.

Eksempel 2: Bytte ut et tegnsett med et spesifikt tegn
Oppgaven er å erstatte et tegnsett med et gitt tegn. Et tegnsett betyr en rekke tegn. Ire.sub()>metode et tegnsett skrives innenfor [ ](firkantede parenteser).

I dette eksemplet vil små bokstaver, dvs. [a-z] erstattes av sifferet 0. Nedenfor er implementeringen.




streng understreng 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()>

>

>

Produksjon:

 22 A0000 00 0000000000 00 E0000 D00.>

Hvis det er behov for å erstatte både små og store tegnsett, må vi introdusere det store tegnsettet på denne måten: [a-zA-Z] eller effektive måten å gjøre det på er å bruke flagg.

Eksempel 3: Skifte-usensitiv erstatning av et tegnsett med et spesifikt tegn
I dette eksemplet vil både små og store bokstaver erstattes av det gitte tegnet. Med bruk av flagg , kan denne oppgaven utføres veldig enkelt.

Dere.I>flagg står for re. IGNORER . Ved å introdusere dette flagget ire.sub()>metode og nevne et hvilket som helst tegnsett, dvs. små eller store bokstaver, kan oppgaven fullføres.

Nedenfor er gjennomføringen.




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

vis skjulte apper

>

>

Produksjon:

 22 00000 00 0000000000 00 00000 000.>

Eksempel 4: Utfør substitusjon opp til et visst antall tegn
I dette eksemplet vil substitusjon være opp til et spesifikt antall tegn og ikke på hele strengen. For å utføre denne typen substitusjonre.sub()>metoden har et argumentcount>.

Ved å gi en numerisk verdi til dette argumentet, kan antall tegn som substitusjon vil skje på, kontrolleres. Nedenfor er gjennomføringen.




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

>

>

Produksjon:

 000000 00ur Passion.>

Eksempel 5: Substitusjon ved bruk av stenografitegnklasse og forbehandling av tekst
Regex-modulen gir mange stenografiske tegnklasser for de tegnsettene som er svært vanlige under forbehandling av tekst. Bruk av stenografitegnklasse resulterer i å skrive effektiv kode og reduserer behovet for å huske rekkevidden til hvert tegnsett.

annet hvis java

For å få en detaljert forklaring av stenografi-tegnklassen og hvordan du skriver regulære uttrykk i python for forhåndsbehandling av tekst, klikk her . Følgende er noen av de ofte brukte stenografiske karakterklassene:

w: samsvarer med alfanumeriske tegn
W: samsvarer med ikke-alfanumeriske tegn som @, #, ‘, +, %, –
d: samsvarer med siffertegn
s: samsvarer med mellomromstegn

Betydningen av noen syntaks:
legge til et pluss(+)-symbol etter en tegnklasse eller et sett: repetisjon av foregående tegnklasse eller sett i minst 1 eller flere ganger.

legge til et stjerne(*)-symbol etter en tegnklasse eller et sett: repetisjon av foregående tegnklasse eller sett i minst 0 eller flere ganger.

legge til et caret(^)-symbol før en tegnklasse eller et sett: samsvarende posisjon bestemmes for den tegnklassen eller satt i begynnelsen av strengen.

legge til et dollar($)-symbol etter en tegnklasse eller et sett: samsvarende posisjon bestemmes for den tegnklassen eller satt på slutten av strengen.

Dette eksemplet demonstrerer bruken av nevnte stenografiske tegnklasser for substitusjon og forbehandling av tekst for å få rene og feilfrie strenger. Nedenfor er gjennomføringen.




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

>

>

Produksjon:

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