Python, split za razdelitev niza, ločenega z vejico, odstranitev belih pik in pretvorbo v seznam

Posel

Če v Pythonu pri deljenju niza, ločenega z vejico, v seznam ni presledkov, deluje samo funkcija split(). Če so v njem presledki, ga je koristno kombinirati s funkcijo strip(), ki odstrani dodatne presledke. Poleg tega je uporaba zapisa za razumevanje seznama pameten način pisanja.

V tem razdelku najprej pojasnimo naslednje.

  • razdeli niz z določenim ločilom in ga vrne kot seznamsplit()
  • Odstranjevanje dodatnih znakov z začetka in konca niza.strip()
  • Zapis za razumevanje seznama za uporabo funkcij in metod za elemente seznama.

Prikazano je tudi, kako ustvariti seznam nizov, ločenih s presledki in vejicami, tako da odstranite presledke, kot je prikazano spodaj.
'one, two, three'

Poleg tega bomo razpravljali o naslednjem.

  • Kako ga dobite kot seznam številk
  • Kako s funkcijo join() združite seznam in ga ponovno spremenite v niz

split(): razdeli niz z določenim ločilom in ga vrne kot seznam

Z metodo split() za nize lahko razdelimo niz z določenim ločilom in ga dobimo kot seznam (polje). Določeni ločilnik lahko določite z naslednjim argumentom.sep

Če je argument sep izpuščen in ni naveden ločilnik, se niz razdeli po presledkih in vrne seznam. Zaporedni presledki in tabulatorji prav tako razdelijo seznam, zato lahko, če želite ustvariti seznam nizov, ločenih s tabulatorji, uporabite funkcijo split() brez argumenta.

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']

Če je v argumentu sep naveden ločilo, razdeli seznam s tem nizom in vrne seznam.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

Če v primeru niza, ločenega z vejico, ni dodatnega belega prostora, ni težav, če pa za niz, ločen z vejico + belim prostorom, zaženete funkcijo split() z vejico kot ločilom, boste dobili seznam nizov z belim prostorom na začetku.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Kot ločilo lahko uporabite vejico + presledek, vendar to ne bo delovalo, če je število presledkov v izvirnem nizu drugačno.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

Za obravnavo dveh presledkov lahko uporabite metodo strip(), ki jo bomo razložili v nadaljevanju.

strip(): Odstranjevanje dodatnih znakov z začetka in konca niza.

strip() je metoda za odstranjevanje dodatnih znakov z začetka in konca niza.

Če je argument izpuščen, se vrne nov niz z odstranjenimi belimi znaki. Izvirni niz se ne spremeni.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Če je kot argument naveden niz, se odstranijo znaki iz niza.

s = '-+-one-+-'
print(s.strip('-+'))
# one

V tem primeru se presledki ne odstranijo. Če želite odstraniti tudi bele prostore, kot argument podajte niz s presledki, kot je prikazano spodaj.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

funkcija strip() skrbi za oba konca, na voljo pa so tudi naslednje funkcije.

  • lstrip():Proces je šele začetek
  • rstrip():Obdela samo konec vrstice.

Zapis za razumevanje seznama: uporaba funkcij in metod za elemente seznama

Če želite uporabiti funkcijo ali metodo za elemente seznama, je pametno uporabiti zapis za razumevanje seznama namesto zanke for, če želite na koncu dobiti seznam.

V tem primeru uporabimo funkcijo strip() za seznam, ki ga dobimo z razdelitvijo niza s funkcijo split(). Dodatne bele pike v nizu, ločenem z vejico, ki vsebuje bele pike, lahko odstranimo, da dobimo seznam.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Če to uporabimo za prazen niz, dobimo seznam z enim samim praznim nizom kot elementom.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Če želite za prazen niz dobiti prazen seznam, lahko v zapisu za razumevanje seznama nastavite pogojno vejo.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Če manjka element, ločen z vejico, kot je opisano zgoraj, ga bo prva metoda naštela kot element praznega niza.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Če želite manjkajoče dele prezreti, lahko v zapisu za razumevanje seznama določite pogojno vejo.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Pridobi kot seznam številk

Če želite dobiti niz števil, ločen z vejico, kot seznam števil namesto kot niz, uporabite int() ali float() za pretvorbo niza v število v zapisu za razumevanje seznama.

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(): Združite seznam in ga dobite kot niz

Če želite združiti seznam in pridobiti nize, ločene z določenim ločilom, uporabite metodo join().

Zlahka se zmotimo, vendar upoštevajte, da je metoda join() metoda za niz in ne za seznam. Seznam je naveden kot 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

V eni vrstici ga lahko zapišete na naslednji način.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Če želite spremeniti samo fiksni ločilnik, ga je lažje zamenjati z metodo replace().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three