Python | Rozdělit více znaků z řetězce
V Pythonu jsou řetězce základním datovým typem, který se používá k ukládání textových dat a práci s nimi. Rozdělení řetězce na mnoho znaků je v Pythonu častou činností při zpracování textu. Při kódování nebo improvizaci svých programátorských dovedností jste jistě museli narazit na mnoho scénářů, kde jste chtěli rozdělit() v Pythonu nerozdělovat pouze na jeden znak, ale na více oddělovačů najednou. V tomto článku uvidíme různé přístupy Pythonský řetězec rozdělit více oddělovačů.
Input: 'GeeksForGeeks, is an-awesome! website' Output: ['GeeksForGeeks, ', 'is', 'an-awesome!', 'website'] Explanation: In This, we are splitting the multiple delimiters from the string.
v Krajta , Můžeme použít různé přístupy k rozdělení více oddělovačů z řetězce. S těmito metodami je rozdělení a manipulace s jednotlivými znaky z řetězce v Pythonu jednoduché.
- Použitím Funkce rozdělení
- Použití nahradit()
- Použitím re.split()
- Pomocí re.findall()
Rozdělit řetězec podle více oddělovačů pomocí funkce rozdělení
V Pythonu můžeme rozdělit více znaků z řetězce pomocí split(). Zde iterujeme každý oddělovač a rozdělíme řetězec pomocí funkce split(). Po rozdělení výsledný seznam spojíme mezerami pomocí funkci join(). a modifikovaný řetězec rozdělíme na základě mezer, abychom získali požadovaný seznam řetězců.
Python3
string> => 'GeeksForGeeks, | is an-awesome! website'> delimiters> => [> ','> ,> '|'> ,> ';'> ,> '!'> ]> for> delimiter> in> delimiters:> > string> => .join(string.split(delimiter))> result> => string.split()> print> (result)> |
Výstup
['GeeksForGeeks', 'is', 'an-awesome', 'website']
Python rozdělený podle více znaků pomocí replace()
V Pythonu můžeme rozdělit více znaků z řetězce pomocí nahradit(). Toto je velmi nováčkovský způsob rozdělení. Nevyužívá regulární výraz a je neefektivní, ale přesto stojí za vyzkoušení. Pokud znáte znaky, které chcete rozdělit, jednoduše je nahraďte mezerou a poté použijte rozdělit() .
Python3
data> => 'Let's_try, this now'> # printing original string> print> (> 'The original string is : '> +> data)> # Using replace() and split()> # Splitting characters in String> res> => data.replace(> '_'> ,> ).replace(> ', '> ,> ).split()> print> (> 'The list after performing split functionality : '> +> str> (res))> |
Výstup
The original string is : Let's_try, this now The list after performing split functionality : ['Let's', 'try', 'this', 'now']
Rozdělení Pythonu více znaky pomocí Re.split()
V Pythonu můžeme rozdělit více znaků z řetězce pomocí resplit(). Toto je nejúčinnější a běžně používaná metoda pro rozdělení více znaků najednou. K tomu využívá regulární výrazy (regulární výrazy).
Python3
import> re> data> => 'techcodeview.com, is_an-awesome ! website'> print> (> 'The original string is : '> +> data)> # Using re.split()> # Splitting characters in String> res> => re.split(> ', |_|-|!'> , data)> print> (> 'The list after performing split functionality : '> +> str> (res))> |
Výstup
The original string is : techcodeview.com, is_an-awesome ! website The list after performing split functionality : ['techcodeview.com', 'is', 'an', 'awesome ', ' website']
Řádek re.split(‘, |_|-|!‘, data) říká Pythonu, aby rozdělil proměnná data na znaky: , nebo _ nebo – nebo ! . Symbol | představuje nebo. V regulárním výrazu jsou některé symboly, se kterými se zachází jako se speciálními symboly a mají různé funkce. Chcete-li se na takovém symbolu rozdělit, musíte jej ukončit pomocí a (obrácené lomítko) a potřebuje jednu mezeru před a za speciálními znaky.
Seznam speciálních znaků, které je třeba před použitím escapovat:
. + * ? [ ^ ] $ ( ) { } = | : Příklad: V tomto kódu používáme resplit () k rozdělení znaků z řetězců v Pythonu.
Python3
import> re> newData1> => 'techcodeview.com, is_an-awesome ! app + too'> # To split '+' with one espace before and after '+' symbol and use backslash> print> (re.split(> ', |_|-|!|+'> , newData1))> newData2> => 'techcodeview.com, is_an-awesome ! app+too'> # To split '+' without one espace before and after '+' symbol and use backslash> print> (re.split(> ', |_|-|!|+'> , newData2))> |
Výstup
['techcodeview.com', ' is', 'an', 'awesome', ' app', 'too']
Poznámka: Chcete-li vědět více o regulárním výrazu klikněte zde .
Rozdělit řetězec podle více oddělovačů pomocí re.findall()
V Pythonu můžeme rozdělit více znaků z řetězce pomocí refindall(). Toto je trochu tajemnější forma, ale šetří čas. Používá také regulární výraz jako výše, ale místo toho .rozdělit() metoda, používá metodu tzv . findall() . Tato metoda najde všechny odpovídající instance a vrátí každou z nich v seznamu. Tento způsob rozdělení je nejlepší použít, když neznáte přesné znaky, podle kterých chcete rozdělení.
Python3
import> re> data> => 'This, is - another : example?!'> print> (> 'The original string is : '> +> data)> # Using re.findall()> # Splitting characters in String> res> => re.findall(r> '[w']+'> , data)> print> (> 'The list after performing split functionality : '> +> str> (res))> |
Výstup
The original string is : This, is - another : example?! The list after performing split functionality : ['This', 'is', 'another', 'example']
Zde klíčové slovo [w’]+ znamená, že najde všechny výskyty abeced nebo podtržítka(_) jeden nebo více a vrátí je v seznamu. Poznámka: [w’]+ se po podtržítku nerozdělí( _ ), protože vyhledává abecedy i podtržítka.
Příklad: V tomto kódu používáme refindall () k rozdělení znaků z řetězců Krajta.
Python3
import> re> testData> => 'This, is - underscored _ example?!'> print> (re.findall(r> '[w']+'> , testData))> |
Výstup
['This', 'is', 'underscored', '_', 'example']
Třídy postav
Regex cheat sheet na popis postavy
| Třída těsnopisných znaků | Představuje |
|---|---|
| d | Jakákoli číslice od 0 do 9 |
| D | Jakýkoli znak, který není číselnou číslicí od 0 do 9 |
| V | Jakékoli písmeno, číslice nebo znak podtržení |
| V | Jakýkoli znak, který není písmenem, číslicí nebo znakem podtržítka |
| s | Jakákoli mezera, tabulátor nebo znak nového řádku |
| S | Jakýkoli znak, který není mezerou, tabulátorem nebo novým řádkem |