Mester Python’s split()-metode: Del strenger som proff!

I denne veiledningen skal vi utforske bruken av Pythons `split()`-metode for å fragmentere en streng i en sekvens av strenger, presentert som en liste.

Når man manipulerer strenger i Python, finnes det flere integrerte metoder som gir mulighet til å lage modifiserte kopier av strenger. Dette inkluderer konvertering til store bokstaver, sortering av strenger, og andre operasjoner. En av disse metodene er `.split()`, som har til hensikt å bryte opp en Python-streng i en liste bestående av delstrenger. Vi vil fordype oss i denne funksjonaliteten gjennom praktiske kodeeksempler.

Etter å ha fullført denne veiledningen, vil du ha tilegnet deg følgende ferdigheter:

  • Forstå hvordan `.split()`-metoden fungerer
  • Kunne tilpasse strengdelingen ved hjelp av parameterne `sep` og `maxsplit`

La oss komme i gang!

Syntaksen for `split()`-metoden i Python

Her presenteres den generelle syntaksen for bruk av Pythons `split()`-metode på enhver gyldig streng:

string.split(sep, maxsplit)

# Parametere:
sep, maxsplit

# Returnerer:
En liste med strenger

Her kan `streng` representere en hvilken som helst lovlig Python-streng.

Både `sep`- og `maxsplit`-parameterne er valgfrie.

  • `sep` angir skilletegnet som brukes for å dele strengen. Dette må spesifiseres som en streng.
  • `maxsplit` er et heltall som definerer hvor mange ganger strengen skal deles.

Dersom valgfrie parametere ikke spesifiseres, benyttes standardverdiene.

  • Dersom `sep`-verdien ikke er spesifisert, vil mellomrom fungere som standard skilletegn.
  • Dersom `maxsplit`-verdien ikke er spesifisert, er standardverdien -1, noe som innebærer at strengen vil deles ved alle forekomster av skilletegnet.

En forklaring av syntaksen i vanlig språkbruk:

`split()`-metoden deler en streng maksimalt `maxsplit` antall ganger ved forekomsten av skilletegnet definert av `sep`-parameteren.

Nå som vi har gått gjennom syntaksen til Python `split()`-metoden, lar oss fortsette med noen eksempler.

Dele en Python-streng i en liste av strenger

Dersom du har Python 3 installert, kan du aktivt følge med på denne veiledningen ved å kjøre kodebitene i en Python REPL.

For å starte REPL, kjør en av de følgende kommandoene i terminalen din:

$ python
$ python -i

▶️ Du kan også eksperimentere med disse eksemplene i tipsbilk.nets Python editor.

I dette eksemplet er `py_str` en Python-streng. La oss anvende `.split()`-metoden på `py_str` uten parametere og se på resultatet.

py_str = "Lær hvordan du bruker split() i Python"
py_str.split()

# Output
['Lær', 'hvordan', 'du', 'bruker', 'split()', 'i', 'Python']

Som vist ovenfor, blir strengen delt ved alle forekomster av mellomrom.

Dele en Python-streng ved forekomst av skilletegn

#1. Som et første eksempel, la oss dele strengen `py_str` med doble understrek (__) som skilletegn.

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

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

#2. La oss se på et annet eksempel. Her inneholder `py_str` tre setninger, hver avsluttet med et punktum (.).

py_str = "Jeg elsker koding. Python er kult. Jeg lærer Python i 2022"
py_str.split(sep='.')

# Output
['Jeg elsker koding', ' Python er kult', " Jeg lærer Python i 2022"]

▶️ Når vi kaller `.split()`-metoden på denne strengen, med ««.»» som skilletegn, genereres en liste med tre setninger, som vist i kodeeksemplet ovenfor.

#3. La oss stille noen spørsmål:

  • Hva skjer dersom skilletegnet aldri forekommer i strengen?
  • Hvordan vil delingen foregå i dette tilfellet?

Her er et eksempel:

Vi forsøker å dele `py_str` ved forekomsten av en stjerne

py_str = "Denne linjen inneholder ingen stjerne."
py_str.split(sep='*')

# Output
['Denne linjen inneholder ingen stjerne.']

– som ikke eksisterer i strengen.

Ettersom ingen deling er mulig i dette tilfellet, vil den resulterende listen inneholde hele strengen.

I neste avsnitt skal vi undersøke hvordan vi kan anvende `split()`-metoden på innholdet i en tekstfil.

Dele innholdet i en Python-fil

Når du arbeider med tekstfiler i Python, kan det være nødvendig å dele innholdet i filen – basert på et skilletegn – for enklere behandling.

Her er et eksempel på en tekstfil:

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

Kodesnutten nedenfor illustrerer hvordan du kan bruke `split` på innholdet i en eksempeltekstfil.

  • Koden ovenfor utfører følgende:
  • Benytter `with`-kontekstbehandling for å åpne og håndtere tekstfilen «sample.txt».
  • Leser innholdet i filen ved hjelp av `.read()`-metoden på filobjektet `f`.
  • Deler innholdet ved forekomsten av skilletegn-ellipsen (…) og lagrer det i listen `str_list`.

Går gjennom `str_list` for å få tilgang til og skrive ut hver streng.

# Output
Dette er en eksempeltekstfil
Den inneholder informasjon om
Komme i gang med <a href="https://tipsbilk.net.com/pcap-certification/">programmering i Python</a>
Ifølge StackOverflow Developer Survey 2022
Python er et av de mest populære programmeringsspråkene
Så hva venter du på? Begynn å lære!

Her er resultatet.

Som en øvelse, prøv å dele innholdet i en tekstfil med en valgfri separator.

Dele en Python-streng i biter

Ved en deling av en streng en gang, oppstår to biter; to delinger gir tre biter.

📋 Generelt, når en streng deles K ganger, vil man oppnå K + 1 biter.

Dette er illustrert nedenfor.

Hvordan `maxsplit`-parameteren fungerer (bilde av forfatteren)

py_str = "Del#1  Jeg er en større del, Del#2"
py_str.split(maxsplit=1)

# Output
['Del#1', "Jeg er en større del, Del#2"]

#1. Vi setter `maxsplit` lik 1. Vi har ikke spesifisert noe skilletegn, så delingen vil som standard foregå ved mellomrom.

Selv om den andre delen av listen inneholder mellomrom, foregår ikke ytterligere deling, ettersom delingen styres av `maxsplit`-verdien som er satt til én.

py_str = "Del#1 Del#2 Jeg er en stor Del#3, selv om jeg inneholder mellomrom"
py_str.split(maxsplit=2)

# Output
['Del#1',
 'Del#2',
 "Jeg er en stor Del#3, selv om jeg inneholder mellomrom"]

#2. La oss øke `maxsplit`-verdien til 2 og observere hvordan delingen utføres for det følgende eksemplet.

Som i det forrige eksemplet, avgjør `maxsplit`-verdien antall delinger som utføres. Vi får tre deler, delt etter den første og andre forekomsten av mellomrom.

#3. Hva skjer hvis man setter `maxsplit` til en verdi som overstiger antall forekomster av skilletegnet?

py_str = "Det, er, kun, 4, kommaer"
py_str.split(maxsplit=8)

# Output
['Det,', 'er,', 'kun,', '4,', 'kommaer']

I den følgende kodesnutten setter vi `maxsplit` til 8, mens strengen kun inneholder fire kommaer.

Her deler `split`-metoden `py_str` ved alle fire forekomster av et komma. Selv om du setter `maxsplit` til en verdi som er mindre enn -1, som for eksempel -7, vil delingen utføres på alle forekomster av skilletegnet.

La oss deretter sammenfatte alt vi har lært og anvende både `sep`- og `maxsplit`-parameterne.

Dele en Python-streng i biter ved hjelp av et skilletegn

py_str = "Del#1, Del#2, Jeg er en stor Del#3, selv om jeg inneholder et ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Del#1', ' Del#2', " Jeg er en stor Del#3, selv om jeg inneholder et ,"]

#1. Anta at vi ønsker å dele strengen `py_str` i tre biter ved forekomst av komma (,). For å oppnå dette kan vi sette `sep`-verdien til ««,»» og `maxsplit`-verdien til 2 i metodekallet.

Som fremgår av resultatet, utføres delingen to ganger ved de to første forekomstene av skilletegnet.

#2. Skilletegnet `sep` trenger ikke alltid å være et spesialtegn. Det kan være en sekvens av spesialtegn, slik som de doble understrekene vi benyttet tidligere, eller det kan til og med være en delstreng.

py_str = "Du må lære datastrukturer, lære algoritmer, og lære mer!"
py_str.split(sep = 'lære',maxsplit=2)

# Output
['Du må ', ' datastrukturer, ', ' algoritmer, og lære mer!']

La oss bruke strengen «lære» som `sep`-argument og se hvordan delingen gjennomføres ved ulike verdier for `maxsplit`. Her setter vi `maxsplit` til 2.

py_str = "Du må lære datastrukturer, lære algoritmer, og lære mer!"
py_str.split(sep = 'lære',maxsplit=-1)

# Output
['Du må ', ' datastrukturer, ', ' algoritmer, og ', ' mer!']

#3. Dersom man ønsker å dele `py_str` ved alle forekomster av strengen «lære», kan vi kalle denne `.split()`-metoden ved å sette `sep` = «lære»—uten `maxsplit`-parameteren. Dette tilsvarer å eksplisitt sette `maxsplit`-verdien til -1, som vist i kodesnutten under.

Vi observerer at delingen utføres ved alle forekomster av «lære».

Oppsummering

Jeg håper at du nå har fått en klar forståelse av hvordan `.split()`-metoden anvendes med Python-strenger.

  • Her er en oppsummering av denne veiledningen:
  • Pythons integrerte `.split()`-metode deler en streng i en liste av strenger.
  • Benytt `string.split()` for å dele strengen ved alle forekomster av standard skilletegn, mellomrom.

Bruk `string.split(sep,maxsplit)` for å dele strengen `maxsplit` antall ganger ved forekomst av skilletegn `sep`. Den resulterende listen vil ha `maxsplit+1` elementer.

Som et neste skritt, kan du utforske hvordan man sjekker om Python-strenger er palindromer eller anagrammer.