Při rozdělování řetězce odděleného čárkou na seznam v jazyce Python, pokud mezi nimi nejsou mezery, funguje funkce split(). Pokud tam mezery jsou, je užitečné to kombinovat s funkcí strip(), která odstraní přebytečné mezery. Kromě toho je použití zápisu s porozuměním seznamu chytrým způsobem zápisu.
V této části nejprve vysvětlíme následující.
- Rozdělit řetězec se zadaným oddělovačem a vrátit jej jako seznam
split()
- Odstranění přebytečných znaků ze začátku a konce řetězce.
strip()
- Zápis pro porozumění seznamu pro použití funkcí a metod na prvky seznamu.
Ukazuje také, jak vytvořit seznam řetězců oddělených mezerami a čárkami odstraněním mezer, jak je uvedeno níže.'one, two, three'
Dále se budeme zabývat následujícími tématy
- Jak ji získat jako seznam čísel
- Jak použít funkci join() ke spojení seznamu a opětovnému vytvoření řetězce
split(): Rozdělit řetězec se zadaným oddělovačem a vrátit jej jako seznam
Pomocí metody split() pro řetězce můžete řetězec rozdělit zadaným oddělovačem a získat jej jako seznam (pole). Zadaný oddělovač lze zadat pomocí následujícího argumentu.sep
Pokud je argument sep vynechán a není zadán žádný oddělovač, rozdělí řetězec podle mezer a vrátí seznam. Po sobě jdoucí mezery a tabulátory rovněž rozdělí seznam, takže pokud chcete vytvořit seznam řetězců oddělených tabulátory, můžete použít split() bez argumentu.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
Pokud je v argumentu sep uveden oddělovač, rozdělí seznam tímto řetězcem a vrátí seznam.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
Pokud v případě řetězce odděleného čárkou není žádná bílá mezera navíc, není to žádný problém, ale pokud spustíte funkci split() s čárkou jako oddělovačem pro řetězec oddělený čárkou + bílou mezerou, vznikne seznam řetězců, na jehož začátku zůstane bílá mezera.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Jako oddělovač můžete použít čárku + mezeru, ale nebude to fungovat, pokud je počet mezer v původním řetězci jiný.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Pro práci se dvěma mezerami lze použít metodu strip(), která bude vysvětlena dále.
strip(): Odstranění přebytečných znaků ze začátku a konce řetězce.
strip() je metoda pro odstranění přebytečných znaků ze začátku a konce řetězce.
Pokud je argument vynechán, je vrácen nový řetězec s odstraněnými bílými znaky. Původní řetězec se nemění.
s = ' one ' print(s.strip()) # one print(s) # one
Pokud je jako argument zadán řetězec, budou znaky obsažené v řetězci odstraněny.
s = '-+-one-+-' print(s.strip('-+')) # one
V tomto případě se mezery neodstraňují. Pokud tedy chcete odstranit i bílé znaky, předejte jako argument řetězec obsahující mezery, jak je uvedeno níže.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() zpracovává oba konce, ale k dispozici jsou také následující funkce.
lstrip()
:Proces je jen začátekrstrip()
:Zpracujte pouze konec řádku.
Zápis pro porozumění seznamu: použití funkcí a metod na prvky seznamu
Pokud chcete na prvky seznamu aplikovat funkci nebo metodu, je rozumné použít zápis pro porozumění seznamu místo cyklu for, pokud chcete na konci získat seznam.
- Související články:Použití notace seznamů v jazyce Python
Zde použijeme funkci strip() na seznam získaný rozdělením řetězce pomocí funkce split(). Přebytečné bílé znaky v řetězci odděleném čárkou, který obsahuje bílé znaky, lze odstranit a vytvořit tak seznam.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Při použití této funkce na prázdný řetězec lze získat seznam s jediným prázdným řetězcem jako prvkem.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Pokud chcete pro prázdný řetězec získat prázdný seznam, můžete v zápisu porozumění seznamu nastavit podmíněnou větev.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Pokud také chybí prvek oddělený čárkou, jak je popsáno výše, první metoda jej vypíše jako prázdný řetězcový prvek.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Pokud chcete chybějící části ignorovat, můžete v zápisu porozumění seznamu nastavit podmíněnou větev.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Získat jako seznam čísel
Pokud chcete získat řetězec čísel oddělený čárkou jako seznam čísel namísto řetězce, použijte int() nebo float() pro převod řetězce na číslo v notaci pro porozumění seznamu.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join(): Sloučení seznamu a jeho získání jako řetězce
Pokud chcete spojit seznam a získat řetězce oddělené určitým oddělovačem, použijte metodu join().
Je snadné udělat chybu, ale všimněte si, že metoda join() je metoda pro řetězce, nikoli pro seznamy. Seznam se zadává jako argument.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
Můžete to napsat na jeden řádek takto.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Pokud chcete pouze změnit pevný oddělovač, je jednodušší jej nahradit pomocí metody replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three