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 algusrstrip()
: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.
- Seotud artiklid:Pythoni loendi arusaadavuse notatsiooni kasutamine
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