logo

Python – Nahrazování vzorů v textu pomocí regulárního výrazu

Regulární výraz (regulární výraz) je určen k vytažení požadovaných informací z jakéhokoli textu, který je založen na vzorech. Jsou také široce používány pro manipulaci s texty založenými na vzorech, což vede k předběžnému zpracování textu a jsou velmi užitečné při implementaci digitálních dovedností, jako je Zpracování přirozeného jazyka (NLP) .

Tento článek ukazuje, jak použít regulární výraz k nahrazení vzorů poskytnutím více příkladů, kde každý příklad je jedinečný scénář sám o sobě. Je velmi nutné pochopitre.sub()>metodare>(regulární výraz) modul k pochopení daných řešení.



There.sub()>metoda provádí globální vyhledávání a globální nahrazení na daném řetězci. Používá se pro nahrazení určitého vzoru v řetězci. Tato funkce má celkem 5 argumentů.

Syntax: re.sub(vzor, ​​repl, řetězec, počet=0, příznaky=0)

základy sestavení ubuntu

Parametry:
vzor – vzor, ​​který má být vyhledán a nahrazen
repl – řetězec, kterým má být vzor nahrazen
string – název proměnné, ve které je vzor uložen
počet – počet znaků, do kterých bude provedena záměna
příznaky – používá se k úpravě významu vzoru regulárních výrazů



count>a flags>jsou volitelné argumenty.

Příklad 1: Nahrazení určitého textového vzoru
V tomto příkladu bude daný textový vzor prohledán a nahrazen v řetězci. Cílem je použít velmi normální formure.sub()>metoda pouze s prvními 3 argumenty.

Níže je implementace.






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

>

>

Výstup:

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

Bez ohledu na to, kolikrát je požadovaný vzor v řetězci přítomen,re.sub()>funkce je všechny nahradí daným vzorem. To je důvod, proč je ve výše uvedeném příkladu obě slova „velmi“ nahrazena slovy „tak“.

Příklad 2: Nahrazení znakové sady určitým znakem
Úkolem je nahradit znakovou sadu daným znakem. Znaková sada znamená rozsah znaků. Vre.sub()>metoda se znaková sada zapíše do [ ] (hranaté závorky).

V tomto příkladu bude sada malých písmen, tj. [a-z] nahrazena číslicí 0. Níže je uvedena implementace.




návrhové vzory v jazyce 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()>

>

>

Výstup:

 22 A0000 00 0000000000 00 E0000 D00.>

Pokud je potřeba nahradit sadu malých i velkých písmen, musíme sadu velkých písmen zavést takto: [a-zA-Z] nebo efektivní způsob, jak to udělat, je pomocí vlajek.

Příklad 3: Náhrada znakové sady specifickým znakem bez ohledu na malá a velká písmena
V tomto příkladu budou malá i velká písmena nahrazena daným znakem. S použitím vlajky , lze tento úkol provést velmi snadno.

There.I>vlajka znamená re. IGNOROVAT PŘÍPAD . Zavedením této vlajky vre.sub()>metodu a uvedení libovolné jedné znakové sady, tj. malých nebo velkých písmen, úkol lze dokončit.

Níže je implementace.




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

>

>

Výstup:

 22 00000 00 0000000000 00 00000 000.>

Příklad 4: Proveďte nahrazování až do určitého počtu znaků
V tomto příkladu bude nahrazení až do určitého počtu znaků a nikoli na celý řetězec. K provedení tohoto typu substitucere.sub()>metoda má argumentcount>.

Zadáním číselné hodnoty tomuto argumentu lze řídit počet znaků, na kterých dojde k nahrazení. Níže je implementace.




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

ex uživatelského jména
>

>

Výstup:

 000000 00ur Passion.>

Příklad 5: Náhrada pomocí zkrácené třídy znaků a předzpracování textu
Modul Regex poskytuje mnoho tříd zkrácených znaků pro ty znakové sady, které jsou velmi běžné při předzpracování textu. Použití zkrácené třídy znaků vede k psaní efektivního kódu a snižuje potřebu pamatovat si rozsah každé znakové sady.

java pokud jinak

Chcete-li získat podrobné vysvětlení třídy zkrácených znaků a jak napsat regulární výraz v pythonu pro předběžné zpracování textu, klikněte tady . Níže jsou uvedeny některé z běžně používaných tříd zkrácených znaků:

w: odpovídá alfanumerickým znakům
W: odpovídá nealfanumerickým znakům jako @, #, ‘, +, %, –
d: odpovídá číselným znakům
s: odpovídá mezerám

Význam nějaké syntaxe:
přidání symbolu plus(+) za třídu znaků nebo sadu znaků: opakování předchozí třídy nebo sady znaků alespoň jednou nebo vícekrát.

přidání symbolu hvězdičky (*) za třídu znaků nebo sadu znaků: opakování předchozí třídy nebo sady znaků alespoň 0 nebo vícekrát.

přidání symbolu stříšky (^) před třídu znaků nebo sadu znaků: odpovídající pozice je určena pro danou třídu znaků nebo sadu na začátku řetězce.

přidání symbolu dolaru ($) za třídu znaků nebo sadu znaků: odpovídající pozice je určena pro danou třídu znaků nebo sadu na konci řetězce.

Tento příklad demonstruje použití zmíněných tříd zkrácených znaků pro nahrazení a předběžné zpracování textu za účelem získání čistých a bezchybných řetězců. Níže je implementace.




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

>

>

Výstup:

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