logo

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




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