Python, split egy vesszővel elválasztott karakterlánc felosztásához, a szóközök eltávolításához és listává alakításához

Üzleti

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éntsplit()
  • 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

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 kezdet
  • rstrip():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.

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
Copied title and URL