logo

Python – Zamenjava vzorcev v besedilu z uporabo regularnega izraza

Regularni izraz (regex) je namenjen pridobivanju zahtevanih informacij iz katerega koli besedila, ki temelji na vzorcih. Pogosto se uporabljajo tudi za manipulacijo besedil, ki temeljijo na vzorcih, kar vodi do predprocesiranja besedila, in so zelo koristni pri izvajanju digitalnih veščin, kot je Obdelava naravnega jezika (NLP) .

Ta članek prikazuje, kako uporabiti regex za zamenjavo vzorcev z več primeri, kjer je vsak primer edinstven scenarij zase. Zelo je potrebno razumetire.sub()>metodare>(regularni izraz) modul za razumevanje danih rešitev.



There.sub()>metoda izvaja globalno iskanje in globalno zamenjavo na danem nizu. Uporablja se za zamenjavo določenega vzorca v nizu. Ta funkcija ima skupno 5 argumentov.

Sintaksa: re.sub(vzorec, repl, niz, štetje=0, zastavice=0)

upravitelj opravil za linux

Parametri:
vzorec – vzorec, ki ga je treba iskati in zamenjati
repl – niz, s katerim naj bo vzorec zamenjan
niz – ime spremenljivke, v kateri je shranjen vzorec
count – število znakov, do katerih bo izvedena zamenjava
zastavice – uporablja se za spreminjanje pomena vzorca regularnega izraza



count>in flags>so neobvezni argumenti.

Primer 1: Zamenjava določenega besedilnega vzorca
V tem primeru bo dani besedilni vzorec preiskan in nadomeščen v nizu. Ideja je uporaba zelo običajne oblikere.sub()>metoda samo s prvimi 3 argumenti.

Spodaj je izvedba.






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

>

>

Izhod:

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

Ne glede na to, kolikokrat je zahtevani vzorec prisoten v nizu, jere.sub()>funkcija vse zamenja z danim vzorcem. Zato sta oba 'zelo' v zgornjem primeru nadomeščena z 'tako'.

Primer 2: Zamenjava nabora znakov z določenim znakom
Naloga je zamenjati nabor znakov z danim znakom. Nabor znakov pomeni obseg znakov. Vre.sub()>metoda je nabor znakov zapisan znotraj [ ](oglati oklepaji).

V tem primeru bo niz malih črk, tj. [a-z], nadomeščen s števko 0. Spodaj je implementacija.




seznam na Javi
# 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()>

>

>

Izhod:

 22 A0000 00 0000000000 00 E0000 D00.>

Če obstaja potreba po zamenjavi nabora znakov z malimi in velikimi črkami, moramo nabor znakov z velikimi črkami uvesti na ta način: [a-zA-Z] ali učinkovito način za to je uporaba zastavic.

Primer 3: Zamenjava nabora znakov z določenim znakom brez upoštevanja velikih in malih črk
V tem primeru bodo tako male kot velike črke zamenjane z danim znakom. Z uporabo zastave , je to nalogo mogoče izvesti zelo enostavno.

There.I>zastava pomeni re. IGNORECASE . Z uvedbo te zastave vre.sub()>metodo in omembo katerega koli nabora znakov, tj. malih ali velikih črk, je naloga lahko dokončana.

Spodaj je izvedba.




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

>

>

Izhod:

 22 00000 00 0000000000 00 00000 000.>

Primer 4: Izvedite zamenjavo do določenega števila znakov
V tem primeru bo zamenjava do določenega števila znakov in ne na celotnem nizu. Za izvedbo te vrste zamenjavere.sub()>metoda ima argumentcount>.

Z zagotavljanjem številske vrednosti temu argumentu je mogoče nadzorovati število znakov, na katerih bo prišlo do zamenjave. Spodaj je izvedba.




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

>

kako odpreti skrite aplikacije na androidu
>

Izhod:

 000000 00ur Passion.>

Primer 5: Zamenjava z uporabo razreda stenografskih znakov in predprocesiranje besedila
Modul Regex ponuja številne razrede stenografskih znakov za tiste nabore znakov, ki so med predprocesiranjem besedila zelo pogosti. Uporaba razreda stenografskih znakov povzroči pisanje učinkovite kode in zmanjša potrebo po zapomnitvi obsega vsakega niza znakov.

java, če drugače

Če želite dobiti podrobno razlago razreda stenografskih znakov in kako napisati regularni izraz v pythonu za predhodno obdelavo besedila, kliknite tukaj . Sledi nekaj pogosto uporabljenih razredov stenografskih znakov:

w: ujema alfanumerične znake
W: ujema nealfanumerične znake, kot so @, #, ', +, %, –
d: ustreza številčnim znakom
s: ustreza presledkom

Pomen nekaterih sintaks:
dodajanje simbola plus(+) za razredom ali nizom znakov: ponovitev prejšnjega razreda znakov ali niza vsaj 1-krat ali večkrat.

dodajanje simbola zvezdice(*) za razredom znakov ali nizom: ponovitev prejšnjega razreda znakov ali niza vsaj 0-krat ali večkrat.

dodajanje simbola caret(^) pred razred znakov ali nabor: položaj ujemanja je določen za ta razred znakov ali nabor na začetku niza.

dodajanje simbola dolarja($) za razredom ali nizom znakov: položaj ujemanja je določen za razred ali niz znakov na koncu niza.

Ta primer prikazuje uporabo omenjenih razredov stenografskih znakov za zamenjavo in predhodno obdelavo besedila, da dobimo čiste nize brez napak. Spodaj je izvedba.




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

>

>

Izhod:

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