Python, split, et jagada komadega eraldatud string, eemaldada tühikud ja teisendada loeteluks

Äri

Kui Pythonis jagatakse komadega eraldatud string loendiks, siis kui nende vahel ei ole tühikuid, töötab lihtsalt split(). Kui on tühikuid, on kasulik kombineerida seda strip() funktsiooniga, et eemaldada lisaväljad. Lisaks sellele on nimekirja mõistmise märkimise kasutamine nutikas viis kirjutada.

Selles jaotises selgitame kõigepealt järgmist.

  • Jagab stringi määratud eraldaja abil ja tagastab selle loeteluna.split()
  • Eemaldab stringi algusest ja lõpust üleliigsed märgid.strip()
  • Loetelu mõistmise notatsioon funktsioonide ja meetodite kohaldamiseks loendi elementidele.

Samuti näitab see, kuidas teha tühikutega ja komadega eraldatud stringide loetelu, eemaldades tühikud, nagu allpool näidatud.
'one, two, three'

Lisaks arutame järgmist

  • Kuidas saada see numbrite loeteluna
  • Kuidas kasutada join(), et liita nimekiri ja muuta see uuesti stringiks

split(): Jagab stringi määratud eraldaja abil ja tagastab selle loeteluna.

Kasutades stringide jaoks meetodit split(), saab stringi jagada määratud eraldaja abil ja saada see loendina (massiivi). Määratud eraldaja saab määrata järgmise argumendiga.sep

Kui argument sep on välja jäetud ja eraldajaid ei ole määratud, jagab see stringi tühikutega ja tagastab nimekirja. Järjestikused tühikud ja tabulaatorid jagavad samuti nimekirja, nii et kui soovite teha tabulaatoriga eraldatud stringide nimekirja, võite kasutada funktsiooni split() ilma argumendita.

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

Kui argumendis sep on määratud eraldaja, jagab see loendi selle stringiga ja tagastab loendi.

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

Komaga eraldatud stringi puhul ei ole probleemi, kui lisaväli puudub, kuid kui käivitate funktsiooni split(), mille eraldaja on koma + valge tühik, siis saate nimekirja stringidest, mille algusesse on jäetud valge tühik.

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

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

Saate kasutada eraldajana koma + tühikut, kuid see ei tööta, kui algse stringi tühikute arv on erinev.', '

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

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

Stringimeetodit strip(), mida selgitatakse järgnevalt, saab kasutada kahe tühiku käsitlemiseks.

strip(): Eemaldab stringi algusest ja lõpust üleliigsed märgid.

strip() on meetod, mis eemaldab stringi algusest ja lõpust üleliigsed märgid.

Kui argument on välja jäetud, tagastatakse uus string, millest on eemaldatud tühikud. Algset stringi ennast ei muudeta.

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

print(s)
#   one  

Kui argumendina on määratud string, eemaldatakse stringis sisalduvad tähemärgid.

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

Sellisel juhul ei eemaldata tühikuid. Seega, kui soovite eemaldada ka tühikuid, andke argumendiks tühikuid sisaldav string, nagu allpool näidatud.'-+ '

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

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

strip() tegeleb mõlemaid otsi, kuid saadaval on ka järgmised funktsioonid.

  • lstrip():Protsess ainult algus
  • rstrip():Töötle ainult rea lõppu.

Loetelu mõistmine: funktsioonide ja meetodite rakendamine loendi elementidele

Kui soovite rakendada funktsiooni või meetodit loendi elementidele, on targem kasutada for-silmuse asemel loendi mõistmise notatsiooni, kui soovite loendi lõpuks kätte saada.

Siinkohal rakendame strip() loendi suhtes, mis on saadud stringi jagamisel funktsiooni split() abil. Täiendavad tühikud komaga eraldatud stringist, mis sisaldab tühikuid, saab eemaldada, et teha nimekiri.

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

Kui seda rakendatakse tühja stringi suhtes, saadakse nimekiri, mille elemendiks on üksainus tühi string.

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

Kui soovite saada tühja loendi tühja stringi jaoks, saate luua tingimusliku haru loendi mõistmise notatsioonis.

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

'one, , three'
Samuti, kui komaga eraldatud element puudub, nagu eespool kirjeldatud, loetleb esimene meetod selle tühja stringi elemendina.

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

Kui soovite puuduvaid osi ignoreerida, võite luua tingimusliku haru loendi mõistmise märkimises.

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

Saada numbrite loeteluna

Kui soovite saada komadega eraldatud numbrite stringi stringi asemel numbrite loendina, rakendage int() või float(), et teisendada string numbriks loendi mõistes.

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(): Nimekirja ühendamine ja selle saamine stringina

Vastupidise mustri puhul, kui soovite liita nimekirja ja saada stringid, mis on eraldatud konkreetse eraldaja abil, kasutage meetodit join().

On lihtne teha viga, kuid pange tähele, et join() on stringi meetod, mitte loendi meetod. Nimekiri on esitatud argumendina.

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

Seda saab kirjutada ühes reas järgmiselt.

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

Kui soovite lihtsalt fikseeritud eraldajaid muuta, on lihtsam seda asendada meetodiga replace().

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