Python, split pro rozdělení řetězce odděleného čárkou, odstranění bílých znaků a převod na seznam

Podnikání

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 seznamsplit()
  • 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čátek
  • rstrip():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.

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
Copied title and URL