Python, split da biste podijelili niz odijeljen zarezima, uklonili razmak i pretvorili u popis

Poslovanje

Prilikom cijepanja niza odvojenog zarezima na popis u Pythonu, ako nema razmaka između, radit će samo split(). Ako ima razmaka, korisno je kombinirati ga sa strip() kako biste uklonili dodatne razmake. Osim toga, korištenje zapisa za razumijevanje popisa pametan je način pisanja.

U ovom odjeljku prvo ćemo objasniti sljedeće.

  • Podijelite niz s određenim graničnikom i vratite ga kao popissplit()
  • Uklonite dodatne znakove s početka i kraja niza.strip()
  • Zapis razumijevanja popisa za primjenu funkcija i metoda na elemente popisa.

Također pokazuje kako napraviti popis nizova odvojenih razmacima i zarezima uklanjanjem razmaka, kao što je prikazano u nastavku.
one, two, three'

Osim toga, razgovarat ćemo o sljedećem

  • Kako to dobiti kao popis brojeva
  • Kako koristiti join() za pridruživanje popisu i ponovno stvaranje stringa

split():Podijelite niz s određenim graničnikom i vratite ga kao popis

Koristeći metodu split() za nizove, možete podijeliti niz s određenim graničnikom i dobiti ga kao popis (niz). Navedeni graničnik može se odrediti sljedećim argumentom.sep

Ako je argument sep izostavljen i nije naveden graničnik, on dijeli niz razmacima i vraća popis. Uzastopni razmaci i tabulatori također će podijeliti popis, pa ako želite napraviti popis nizova razdvojenih tabulatorima, možete koristiti split() bez 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']

Ako je graničnik naveden u argumentu sep, on dijeli popis tim nizom i vraća popis.

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

U slučaju niza odvojenog zarezom, ako nema dodatnog razmaka, nema problema, ali ako pokrenete split() sa zarezom kao graničnikom za niz odvojen zarezom + razmak, završit ćete gore s popisom nizova s ​​ostavljenim razmakom na poč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']

Možete koristiti zarez + razmak kao graničnik na sljedeći način, ali neće raditi ako je broj razmaka u izvornom nizu drugačiji., '

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

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

Metoda stringa strip(), koja će biti objašnjena u nastavku, može se koristiti za rad s dva razmaka.

strip():Uklonite dodatne znakove s početka i kraja niza.

strip() je metoda za uklanjanje dodatnih znakova s ​​početka i kraja niza.

Ako je argument izostavljen, vraća se novi niz s uklonjenim razmacima. Sam izvorni niz se ne mijenja.

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

print(s)
#   one  

Ako je niz naveden kao argument, znakovi sadržani u nizu bit će uklonjeni.

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

U tom se slučaju razmaci ne uklanjaju. Stoga, ako želite ukloniti i razmak, proslijedite niz koji uključuje razmake kao argument, kao što je prikazano u nastavku.-+ '

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

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

strip() obrađuje oba kraja, ali sljedeće funkcije su također dostupne.

  • lstrip():Obradite samo početak
  • rstrip():Obradite samo kraj linije.

Zapis za razumijevanje popisa: primijeni funkcije i metode na elemente popisa

Ako želite primijeniti funkciju ili metodu na elemente popisa, pametno je koristiti zapis razumijevanja popisa umjesto petlje for ako na kraju želite dobiti popis.

Ovdje primjenjujemo strip() na popis dobiven cijepanjem niza pomoću split(). Dodatni razmak u nizu odvojenom zarezima koji sadrži razmak može se ukloniti kako bi se napravio popis.

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

Kada se to primijeni na prazan niz, može se dobiti popis s jednim praznim nizom kao elementom.

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

Ako želite dobiti prazan popis za prazan niz, možete postaviti uvjetnu granu u zapisu razumijevanja popisa.

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

one, , three'
Također, ako nedostaje element odvojen zarezom, kao što je gore opisano, prva metoda će ga navesti kao prazan element niza.

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

Ako želite zanemariti dijelove koji nedostaju, možete postaviti uvjetnu granu u zapisu za razumijevanje popisa.

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

Dobiti kao popis brojeva

Ako želite dobiti niz brojeva odvojenih zarezima kao popis brojeva umjesto niza, primijenite int() ili float() da pretvorite niz u broj u zapisu za razumijevanje popisa.

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():Spojite popis i dohvatite ga kao niz

U suprotnom obrascu, ako se želite pridružiti popisu i dobiti nizove odvojene određenim graničnikom, koristite metodu join().

Lako je pogriješiti, ali imajte na umu da je join() metoda niza, a ne lista. Popis je specificiran kao 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

Možete ga napisati u jednom retku na sljedeći način.

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

Ako samo želite promijeniti fiksni graničnik, lakše ga je zamijeniti metodom replace().

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