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
přepínač java
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))> |
>
rozdíl mezi firmou a společností
>
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 |