Python — paraugu aizstāšana tekstā, izmantojot regulāro izteiksmi

Regulārā izteiksme (regulārā izteiksme) ir paredzēta vajadzīgās informācijas izvilkšanai no jebkura teksta, kura pamatā ir modeļi. Tos plaši izmanto arī, lai manipulētu ar uz rakstiem balstītiem tekstiem, kas noved pie teksta priekšapstrādes un ir ļoti noderīgi digitālo prasmju, piemēram, Dabiskās valodas apstrāde (NLP) .

Šajā rakstā ir parādīts, kā izmantot regulāro izteiksmi, lai aizstātu modeļus, sniedzot vairākus piemērus, kur katrs piemērs ir unikāls scenārijs. Ir ļoti nepieciešams saprast re.sub()> metode re> (regulārā izteiksme) modulis, lai izprastu dotos risinājumus.

The re.sub()> metode veic globālo meklēšanu un globālo aizstāšanu dotajā virknē. To izmanto, lai virknē aizstātu noteiktu rakstu. Šai funkcijai kopumā ir 5 argumenti.

Sintakse: re.sub(raksts, repl, virkne, skaits=0, karodziņi=0)

Parametri:
modelis – modelis, kas jāmeklē un jāaizstāj
repl – virkne, ar kuru jāaizstāj raksts
virkne – mainīgā nosaukums, kurā tiek saglabāts raksts
skaits – rakstzīmju skaits, līdz kuram tiks veikta aizstāšana
karodziņi — to izmanto, lai mainītu regulārā izteiksmes modeļa nozīmi

count> un flags> ir neobligāti argumenti.

1. piemērs: noteikta teksta parauga aizstāšana
Šajā piemērā noteiktais teksta modelis tiks meklēts un aizstāts ar virkni. Ideja ir izmantot ļoti parasto formu re.sub()> metode ar tikai pirmajiem 3 argumentiem.

Zemāk ir tā ieviešana.




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

Izvade:

 It is sunny outside. Thank you so so much. 

Neatkarīgi no tā, cik ilgi vajadzīgais raksts ir virknē, re.sub()> funkcija aizstāj tos visus ar doto modeli. Tāpēc iepriekš minētajā piemērā abi “ļoti” ir aizstāti ar “tik”.

2. piemērs: rakstzīmju kopas aizstāšana ar noteiktu rakstzīmi
Uzdevums ir aizstāt rakstzīmju kopu ar noteiktu rakstzīmi. Rakstzīmju kopa nozīmē rakstzīmju diapazonu. Iekš re.sub()> metode rakstzīmju kopa tiek ierakstīta [ ](kvadrātiekavas).

Šajā piemērā mazo burtu rakstzīmju kopa, t.i., [a-z], tiks aizstāta ar ciparu 0. Tālāk ir sniegta ieviešana.




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

Izvade:

 22 A0000 00 0000000000 00 E0000 D00. 

Ja ir jāaizstāj gan mazo, gan lielo burtu rakstzīmju kopa, mums ir jāievieš lielo burtu rakstzīmju kopa šādā veidā: [a-zA-Z] vai efektīvs veids, kā to izdarīt, ir izmantot karogus.

3. piemērs: reģistrjutīga rakstzīmju kopas aizstāšana ar noteiktu rakstzīmi
Šajā piemērā gan mazie, gan lielie burti tiks aizstāti ar norādīto rakstzīmi. Izmantojot karogi , šo uzdevumu var veikt ļoti vienkārši.

The re.I> karogs apzīmē re. Ignorēt . Ieviešot šo karogu re.sub()> metodi un pieminot jebkuru rakstzīmju kopu, t.i., ar mazajiem vai lielajiem burtiem, uzdevumu var izpildīt.

Zemāk ir tā ieviešana.




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

Izvade:

 22 00000 00 0000000000 00 00000 000. 

4. piemērs: veiciet aizstāšanu līdz noteiktam rakstzīmju skaitam
Šajā piemērā aizstāšana tiks veikta līdz noteiktam rakstzīmju skaitam, nevis visā virknē. Lai veiktu šāda veida aizstāšanu, re.sub()> metodei ir arguments count> .

Sniedzot šim argumentam skaitlisku vērtību, var kontrolēt rakstzīmju skaitu, kurās tiks veikta aizstāšana. Zemāk ir tā ieviešana.




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

Izvade:

 000000 00ur Passion. 

5. piemērs. Aizstāšana, izmantojot īso rakstzīmju klasi un teksta pirmapstrāde
Regex modulis nodrošina daudzas saīsinātas rakstzīmju klases tām rakstzīmju kopām, kuras ir ļoti izplatītas teksta pirmapstrādes laikā. Saīsinātās rakstzīmju klases izmantošana nodrošina efektīvu koda rakstīšanu un samazina nepieciešamību atcerēties katras rakstzīmju kopas diapazonu.

Lai iegūtu detalizētu skaidrojumu par saīsināto rakstzīmju klasi un kā rakstīt regulāro izteiksmi python teksta priekšapstrādei, noklikšķiniet uz šeit . Tālāk ir norādītas dažas no visbiežāk izmantotajām stenogrāfijas rakstzīmju klasēm:

w: atbilst burtciparu rakstzīmēm
W: atbilst rakstzīmēm, kas nav burtciparu rakstzīmes, piemēram, @, #, ‘, +, %, –
d: atbilst ciparu rakstzīmēm
s: atbilst atstarpes rakstzīmēm

Dažas sintakses nozīme:
plusa (+) simbola pievienošana aiz rakstzīmju klases vai kopas: iepriekšējās rakstzīmju klases vai kopas atkārtošana vismaz 1 vai vairākas reizes.

zvaigznītes (*) simbola pievienošana aiz rakstzīmju klases vai kopas: iepriekšējās rakstzīmju klases vai kopas atkārtojums vismaz 0 vai vairāk reižu.

simbola caret(^) pievienošana pirms rakstzīmju klases vai kopas: atbilstošā pozīcija tiek noteikta šai rakstzīmju klasei vai kopai virknes sākumā.

dolāra ($) simbola pievienošana aiz rakstzīmju klases vai kopas: atbilstošā pozīcija tiek noteikta šai rakstzīmju klasei vai kopai virknes beigās.

Šis piemērs parāda minēto īso rakstzīmju klašu izmantošanu teksta aizstāšanai un pirmapstrādei, lai iegūtu tīras un bez kļūdām virknes. Zemāk ir tā ieviešana.




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

Izvade:

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