A split() metódus használata Pythonban

Ebből az oktatóanyagból megtudhatja, hogyan használhatja a Python split() metódusát egy karakterlánc felosztására karakterláncok listájára.

Amikor Python-karakterláncokkal dolgozik, számos beépített karakterlánc-módszert használhat a karakterláncok módosított másolatainak beszerzéséhez, például nagybetűssé alakításhoz, karakterláncok rendezéséhez stb. Az egyik ilyen módszer a .split(), amely egy Python karakterláncot karakterláncok listájára bont, és a kódolási példákon keresztül többet megtudhatunk róla.

Az oktatóprogram végére a következőket tanulja meg:

  • hogyan működik a .split() metódus
  • hogyan lehet testreszabni a felosztást a sep és maxsplit paraméterekkel

Kezdjük!

A split() metódus szintaxisa Pythonban

Íme az általános szintaxis a Python split() metódusának bármely érvényes karakterláncon történő használatához:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Itt a karakterlánc bármely érvényes Python karakterlánc lehet.

Mind a sep, mind a maxsplit paraméter nem kötelező.

  • A sep azt az elválasztót jelöli, amelyen a karakterláncot fel szeretné osztani. Karakterláncként kell megadni.
  • A maxsplit egy egész szám, amely megadja, hogy hányszor szeretné felosztani a karakterláncot.

Az alapértelmezett értékeket a rendszer akkor használja, ha nem ad meg opcionális paramétereket.

  • Ha nem adja meg kifejezetten a sep értéket, a szóköz lesz az alapértelmezett elválasztó.
  • Ha nem adja meg a maxsplit értékét, akkor az alapértelmezés szerint -1, ami azt jelenti, hogy a karakterlánc fel lesz osztva az elválasztó minden előfordulásakor.

A szintaxis megfogalmazása egyszerű nyelven:

A split() metódus a sep paraméterben megadott elválasztó előfordulásakor maxsplit karakterláncot oszt fel.

Most, hogy megtanultuk a Python split() metódus szintaxisát, folytassuk néhány példa kódolásával.

Osszon fel egy Python karakterláncot karakterláncok listájára

Ha van Python 3 telepítve van a gépére, akkor ezzel az oktatóanyaggal kódolhat a következő kódrészletek Python REPL-ben való futtatásával.

A REPL elindításához futtassa a következő parancsok egyikét a terminálról:

$ python
$ python -i

▶️ Ezeket a példákat a etoppc.com Python szerkesztőjében is kipróbálhatod.

  Egy réteg elforgatása egyéni szögben

Ebben a példában a py_str egy Python karakterlánc. Hívjuk meg a .split() metódust a py_str-en paraméterek nélkül, és figyeljük meg a kimenetet.

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Mint fentebb látható, a karakterlánc minden szóköz esetén fel van osztva.

Osszon fel egy Python karakterláncot az elválasztók előfordulásáról

#1. Első példaként osszuk fel a py_str karakterláncot dupla aláhúzásjellel (__) elválasztóként.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2. Vegyünk egy másik példát. Itt a py_str három mondatot tartalmaz, mindegyiket egy pont (.) zárja le.

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ Ha a .split() metódust ezen a karakterláncon hívjuk, akkor a “.” elválasztóként a kapott lista három mondatot tartalmaz, amint az a fenti kódcellában látható.

#3. Tegyünk fel néhány kérdést:

  • Mi történik, ha az elválasztó soha nem fordul elő a karakterláncban?
  • Hogyan történik ebben az esetben a szétválás?

Íme egy példa:

Megpróbáljuk felosztani a py_str-t a csillag előfordulásakor

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

– ami nem fordul elő.

Mivel ebben az esetben nem lehet felosztást végrehajtani, az eredménylista a teljes karakterláncot tartalmazza.

A következő részben megnézzük, hogyan használhatjuk a split() metódust egy szöveges fájl tartalmán.

Egy Python-fájl tartalmának felosztása

Amikor Pythonban szöveges fájlokkal dolgozik, előfordulhat, hogy fel kell osztania a fájl tartalmát – elválasztó alapján – a könnyebb feldolgozás érdekében.

Íme egy minta szöveges fájl:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

Az alábbi kódrészlet bemutatja, hogyan kell használni a split használatát a minta szövegfájl tartalmán.

  • A fenti kód a következőket teszi:
  • A környezetkezelővel a „sample.txt” szövegfájl megnyitásához és a vele való munkához használja.
  • Beolvassa a fájl tartalmát a .read() metódussal az f fájlobjektumban.
  • Felosztja az elválasztó ellipszis (…) előfordulásának tartalmát egy str_list listára.

Az egyes karakterláncok eléréséhez végigfut az str_liston, és kinyomtatja azokat.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://etoppc.com.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Íme a kimenet.

  Hogyan hozzunk létre új sablont a Notionban

Gyakorlatként megpróbálhatja felosztani egy szöveges fájl tartalmát bármelyik elválasztón.

Osszon fel egy Python karakterláncot darabokra

Ha egyszer feloszt egy karakterláncot, két darabot kap; kétszer elosztva hármat kapunk.

📋 Általában, ha egy karakterláncot K-szer osztasz fel, akkor K + 1 darabot kapsz.

Ezt az alábbiakban szemléltetjük.

Hogyan működik a maxsplit paraméter (a szerző képe)

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

#1. A maxsplit értéket 1-gyel állítjuk be. Nem adtunk meg elválasztót, így a felosztás alapértelmezés szerint a szóközökön történik.

Annak ellenére, hogy a lista második darabja szóközöket tartalmaz, a felosztás nem történik meg, mert a felosztást most az egy maxsplit értéke vezérli.

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

#2. Növeljük a maxsplit értéket 2-re, és figyeljük meg, hogyan történik a felosztás a következő példában.

Az előző példához hasonlóan a maxsplit érték határozza meg a felosztások számát. A szóköz első és második előfordulása után három darabot kapunk, felosztásokat.

#3. Mi történik, ha a maxsplit értéket nagyobb értékre állítja be, mint az elválasztó előfordulásainak száma?

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

A következő kódcellában a maxsplit értéket 8-ra állítjuk, ha a karakterlánc csak négy vesszőt tartalmaz.

Itt a felosztási módszer felosztja a py_str-t a vessző mind a négy előfordulásakor. Még ha megpróbálja is a maxsplit értékét -1-nél kisebb értékre, például -7-re állítani, a felosztás az elválasztó minden előfordulásakor megtörténik.

Ezután állítsuk össze mindazt, amit tanultunk, és használjuk mindkét sep maxsplit paramétert.

Osszon fel egy Python karakterláncot darabokra egy elválasztón

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

#1. Tegyük fel, hogy a py_str karakterláncot három részre kell osztanunk a vessző (,) előfordulásakor. Ehhez a metódushívásban a sep értéket ‘,’-re, a maxsplit értékét pedig 2-re állíthatjuk.

  Hogyan lehet törölni a hibás modokat a Sims 4 Mods mappájából

Ahogy a kimeneten látható, a felosztás kétszer történik az elválasztó első két előfordulásakor.

#2. A szeparátornak nem kell mindig speciális karakternek lennie. Ez lehet speciális karakterek sorozata, például a korábban használt dupla aláhúzás, vagy akár egy részkarakterlánc is.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

Állítsuk be a ‘learn’ karakterláncot sep argumentumként, és nézzük meg, hogyan történik a felosztás a maxsplit változó értékeinél. Itt a maxsplit értéket 2-re állítjuk.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

#3. Ha fel szeretné osztani a py_str-t a ‘learn’ karakterlánc minden előfordulásakor, akkor hívhatjuk ezt a .split() metódust a sep = ‘learn’ beállításával – a maxsplit paraméter nélkül. Ez egyenértékű a maxsplit érték explicit -1-re állításával, amint az az alábbi kódcellában látható.

Látjuk, hogy a felosztás a „tanulás” minden előfordulásakor előfordul.

Becsomagolás

Remélem, most már megértette, hogyan kell használni a .split() metódust Python karakterláncokkal.

  • Íme az oktatóanyag összefoglalása:
  • A Python beépített .split() metódusa egy karakterláncot karakterláncok listájára bont.
  • A string.split() használatával feloszthatja a karakterláncot az alapértelmezett elválasztó, a szóköz minden előfordulásakor.

Használja a string.split(sep,maxsplit) karakterláncot a maxsplit karakterlánc felosztásához, ahányszor a szeparátor előfordulása esetén. Az eredményül kapott lista maxsplit+1 elemet tartalmaz.

Következő lépésként megtanulhatja, hogyan ellenőrizheti, hogy a Python-karakterláncok palindromok vagy anagrammák-e.