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é.

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