Amikor egy vesszővel elválasztott karakterláncot listává osztunk Pythonban, ha nincsenek szóközök közöttük, a split() egyszerűen működik. Ha vannak szóközök, akkor célszerű a strip()-vel kombinálni, hogy eltávolítsuk az extra szóközöket. Ezen kívül a lista megértése jelölés használata okos módja a megírásnak.
Ebben a szakaszban először a következőket ismertetjük.
- Egy karakterlánc felosztása egy megadott elválasztóval és visszaadása listaként
split()
- A plusz karakterek eltávolítása a karakterlánc elejéről és végéről.
strip()
- Listamegértési jelölés függvények és metódusok alkalmazásához a lista elemeire.
Azt is megmutatja, hogyan készíthetünk szóközökkel és vesszőkkel elválasztott karakterláncok listáját a szóközök eltávolításával, ahogy az alábbiakban látható.'one, two, three'
Ezenkívül a következőket fogjuk megvitatni
- Hogyan kapjuk meg számok listájaként
- Hogyan használjuk a join() funkciót egy lista összekapcsolására és újra stringgé alakítására?
- split(): Egy karakterlánc felosztása egy megadott elválasztóval és visszaadása listaként
- strip(): A plusz karakterek eltávolítása a karakterlánc elejéről és végéről.
- Listamegértés jelölés: függvények és metódusok alkalmazása listaelemekre
- Számok listájaként kapja meg
- join(): Egy lista összevonása és stringként való kinyerése
split(): Egy karakterlánc felosztása egy megadott elválasztóval és visszaadása listaként
A stringek split() metódusával egy stringet egy megadott elválasztóval szétválaszthatsz, és listaként (tömbként) kaphatod meg. A megadott elválasztójelet a következő argumentummal adhatjuk meg.sep
Ha a sep argumentum kimarad, és nincs megadva elválasztó, akkor a karakterláncot szóközökkel osztja fel, és egy listát ad vissza. Az egymást követő szóközök és tabulátorok is felosztják a listát, így ha tabulátorral elválasztott karakterláncok listáját szeretné létrehozni, akkor a split() funkciót argumentum nélkül is használhatja.
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']
Ha a sep argumentumban egy elválasztójel van megadva, akkor a listát ezzel a karakterlánccal osztja el, és egy listát ad vissza.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
Egy vesszővel elválasztott karakterlánc esetében, ha nincs extra szóköz, akkor nincs probléma, de ha a split() parancsot úgy futtatjuk, hogy vesszővel + szóközzel elválasztott karakterláncot vesszővel választunk el, akkor egy olyan listát kapunk, amelynek az elején fehér szóköz marad.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Az alábbiak szerint használhat vesszőt + szóközt elválasztóként, de ez nem fog működni, ha az eredeti karakterláncban a szóközök száma eltérő.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
A strip() karakterlánc-módszer, amelyet a következőkben ismertetünk, két szóköz kezelésére használható.
strip(): A plusz karakterek eltávolítása a karakterlánc elejéről és végéről.
A strip() egy olyan módszer, amellyel a karakterlánc elejéről és végéről eltávolíthatók a felesleges karakterek.
Ha az argumentumot elhagyja, egy új karakterláncot kap vissza, a szóközöket eltávolítva. Maga az eredeti karakterlánc nem változik.
s = ' one ' print(s.strip()) # one print(s) # one
Ha egy karakterláncot ad meg argumentumként, a karakterláncban szereplő karakterek eltávolításra kerülnek.
s = '-+-one-+-' print(s.strip('-+')) # one
Ebben az esetben a szóközök nem kerülnek eltávolításra. Ezért, ha a szóközöket is el akarja távolítani, adjon meg argumentumként egy szóközöket tartalmazó karakterláncot, az alábbiak szerint.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
A strip() mindkét végét kezeli, de a következő függvények is rendelkezésre állnak.
lstrip()
:A folyamat csak a kezdetrstrip()
:Csak a sor végét dolgozza fel.
Listamegértés jelölés: függvények és metódusok alkalmazása listaelemekre
Ha egy függvényt vagy metódust akarsz alkalmazni egy lista elemeire, akkor okos dolog a for ciklus helyett a listamegértés jelölést használni, ha a végén meg akarod kapni a listát.
- Kapcsolódó cikkek:A Python listamegértés jelölés használata
Itt a strip()-et alkalmazzuk a listára, amelyet a string split()-vel történő felosztásával kapunk. A vesszővel elválasztott, szóközöket tartalmazó karakterláncban lévő extra szóközöket eltávolíthatjuk, hogy listát kapjunk.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Ha ezt egy üres karakterláncra alkalmazzuk, akkor egy olyan listát kapunk, amelynek egyetlen üres karakterlánc az eleme.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Ha üres listát akarsz kapni egy üres karakterláncra, akkor a listamegértési jelölésben beállíthatsz egy feltételes elágazást.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Továbbá, ha egy vesszővel elválasztott elem hiányzik, a fent leírtak szerint, az első módszer üres karakterláncelemként fogja felsorolni.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Ha figyelmen kívül akarja hagyni a hiányzó részeket, akkor a listamegértés jelölésében feltételes elágazást állíthat be.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Számok listájaként kapja meg
Ha egy vesszővel elválasztott számsorozatot nem karakterláncként, hanem számok listájaként szeretné megkapni, alkalmazza az int() vagy a float() funkciót a karakterlánc számokká való átalakításához a listamegértés jelölésében.
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(): Egy lista összevonása és stringként való kinyerése
Az ellenkező mintában, ha egy listát szeretnénk összekapcsolni, és egy adott elválasztójel által elválasztott karakterláncokat szeretnénk kapni, használjuk a join() metódust.
Könnyű hibázni, de vegye figyelembe, hogy a join() egy string metódus, nem pedig egy listamódszer. A lista argumentumként van megadva.
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
Ezt egy sorban a következőképpen írhatja le.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Ha csak egy rögzített elválasztójelet szeretne megváltoztatni, egyszerűbb a replace() metódussal helyettesíteni.
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three