logo

Python – Înlocuirea modelelor în text folosind expresii regex

Expresia regulată (regex) este menită să extragă informațiile necesare din orice text care se bazează pe modele. Ele sunt, de asemenea, utilizate pe scară largă pentru manipularea textelor bazate pe modele, ceea ce duce la preprocesarea textului și sunt foarte utile în implementarea abilităților digitale precum Procesarea limbajului natural (NLP) .

Acest articol demonstrează cum se utilizează regex pentru a înlocui modelele, oferind mai multe exemple în care fiecare exemplu este un scenariu unic în sine. Este foarte necesar să înțelegemre.sub()>Metodă dere>(expresie regulată) modul pentru înțelegerea soluțiilor date.



There.sub()>metoda efectuează căutarea globală și înlocuirea globală pe șirul dat. Este folosit pentru a înlocui un model specific în șir. Există în total 5 argumente ale acestei funcții.

Sintaxă: re.sub(model, repl, șir, număr=0, steaguri=0)

set vs harta

Parametri:
model – modelul care urmează să fie căutat și înlocuit
repl – șirul cu care modelul urmează să fie înlocuit
șir – numele variabilei în care este stocat modelul
count – numărul de caractere până la care se va efectua înlocuirea
steaguri – este folosit pentru a modifica semnificația modelului regex



count>și flags>sunt argumente opționale.

Exemplul 1: Înlocuirea unui model de text specific
În acest exemplu, un anumit model de text va fi căutat și înlocuit într-un șir. Ideea este să folosiți forma foarte normală are.sub()>metoda cu doar primele 3 argumente.

Mai jos este implementarea.






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

>

>

Ieșire:

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

Indiferent de câte ori este prezent modelul necesar în șir,re.sub()>funcția le înlocuiește pe toate cu modelul dat. De aceea, ambele „foarte” sunt înlocuite cu „deci” în exemplul de mai sus.

Exemplul 2: Înlocuirea unui set de caractere cu un anumit caracter
Sarcina este de a înlocui un set de caractere cu un anumit caracter. Un set de caractere înseamnă o serie de caractere. Înre.sub()>metoda se scrie un set de caractere în [ ](paranteze pătrate).

În acest exemplu, setul de caractere minuscule, adică [a-z], va fi înlocuit cu cifra 0. Mai jos este implementarea.




lista pe 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()>

>

>

Ieșire:

 22 A0000 00 0000000000 00 E0000 D00.>

Dacă este nevoie să înlocuim atât setul de caractere litere mici, cât și setul de caractere majuscule, atunci trebuie să introducem setul de caractere majuscule în acest fel: [a-zA-Z] sau efectiv modalitatea de a face este prin utilizarea steagurilor.

Exemplul 3: înlocuirea unui set de caractere cu un anumit caracter care nu ține seama de majuscule și minuscule
În acest exemplu, atât literele mici, cât și majusculele vor fi înlocuite cu caracterul dat. Cu utilizarea de steaguri , această sarcină poate fi realizată foarte ușor.

There.I>steag înseamnă re. IGNORECASE . Prin introducerea acestui steag înre.sub()>metoda și menționarea oricărui set de caractere, adică litere mici sau mari, sarcina poate fi finalizată.

Mai jos este implementarea.




multiplexor

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

>

>

Ieșire:

 22 00000 00 0000000000 00 00000 000.>

Exemplul 4: Efectuați înlocuirea până la un anumit număr de caractere
În acest exemplu, înlocuirea va avea loc până la un anumit număr de caractere și nu pe întregul șir. Pentru a efectua acest tip de înlocuire,re.sub()>metoda are un argumentcount>.

Prin furnizarea unei valori numerice acestui argument, poate fi controlat numărul de caractere pe care va avea loc înlocuirea. Mai jos este implementarea.




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

>

>

Ieșire:

 000000 00ur Passion.>

Exemplul 5: Înlocuirea folosind clasa de caractere scurte și preprocesarea textului
Modulul Regex oferă multe clase de caractere scurte pentru acele seturi de caractere care sunt foarte frecvente în timpul preprocesării textului. Utilizarea clasei de caractere scurte are ca rezultat scrierea unui cod eficient și reducerea nevoii de a reține intervalul fiecărui set de caractere.

logo java

Pentru a obține o explicație detaliată a clasei de caractere scurte și cum să scrieți expresii regulate în Python pentru preprocesarea textului, faceți clic Aici . Iată câteva dintre clasele de caractere scurte utilizate în mod obișnuit:

w: corespunde caracterelor alfanumerice
W: se potrivește cu caractere non-alfanumerice precum @, #, ‘, +, %, –
d: corespunde caracterelor cu cifre
s: se potrivește cu caracterele de spațiu alb

Semnificația unor sintaxe:
adăugarea unui simbol plus(+) după o clasă de caractere sau un set: repetarea clasei de caractere precedente sau a setului de cel puțin 1 sau mai multe ori.

adăugarea unui simbol asterisc (*) după o clasă de caractere sau un set de caractere: repetarea clasei de caractere precedente sau setul de cel puțin 0 sau de mai multe ori.

adăugarea unui simbol caret(^) înaintea unei clase sau unui set de caractere: poziția de potrivire este determinată pentru acea clasă de caractere sau setată la începutul șirului.

adăugarea unui simbol dolar($) după o clasă sau un set de caractere: poziția de potrivire este determinată pentru acea clasă de caractere sau setată la sfârșitul șirului.

Acest exemplu demonstrează utilizarea claselor de caractere scurte menționate pentru înlocuirea și preprocesarea textului pentru a obține șiruri curate și fără erori. Mai jos este implementarea.




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

>

>

Ieșire:

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