Hur man använder split()-metoden i Python

By rik

I den här instruktionen kommer du att upptäcka hur du kan utnyttja Pythons `split()`-funktion för att omvandla en textsträng till en lista av mindre textsträngar.

När du hanterar text i Python finns det en mängd inbyggda funktioner som låter dig modifiera texten, till exempel ändra till stora bokstäver eller sortera om bokstäver. En av dessa är just `split()`, som bryter ner en text till en lista. Vi ska utforska denna funktion genom praktiska kodexempel.

Efter att ha gått igenom den här guiden kommer du att ha lärt dig:

  • Hur `split()`-funktionen fungerar.
  • Hur man anpassar uppdelningen med parametrarna `sep` och `maxsplit`.

Låt oss starta!

Syntaxen för `split()`-funktionen i Python

Här ser du den grundläggande syntaxen för att använda `split()`-funktionen på en Python-sträng:

string.split(sep, maxsplit)

# Parametrar:
sep, maxsplit

# Returnerar:
En lista med strängar

Här kan ’string’ vara vilken giltig Python-sträng som helst.

Både `sep`- och `maxsplit`-parametrarna är valfria.

  • `sep` specificerar det tecken eller den text som du vill dela strängen vid. Denna ska anges som en sträng.
  • `maxsplit` är ett heltal som bestämmer hur många gånger du vill att strängen ska delas.

Deras standardvärden används när du inte anger några parametrar.

  • Om du inte anger `sep`-värdet, kommer mellanslag att användas som standard.
  • Om du inte anger värdet för `maxsplit`, är standardvärdet -1, vilket betyder att strängen kommer att delas vid alla förekomster av avgränsaren.

Förenklat uttryckt:

`split()`-funktionen delar en sträng max antal gånger vid förekomsten av en avgränsare som ges med `sep`-parametern.

Nu när vi har gått igenom syntaxen för `split()`, ska vi undersöka några exempel med kod.

Dela upp en Python-sträng till en lista av strängar

Om du har Python 3 installerat, kan du testa exemplen genom att skriva in koden direkt i en Python REPL.

För att starta REPL, använd något av följande kommandon i din terminal:

$ python
$ python -i

▶️ Du kan också testa dessa exempel på adminvista.coms Python-redigerare.

I det här exemplet har vi en sträng `py_str`. Låt oss anropa `.split()` utan några argument och se vad som händer.

py_str = "Lär dig hur man använder split() i Python"
py_str.split()

# Utdata
['Lär', 'dig', 'hur', 'man', 'använder', 'split()', 'i', 'Python']

Som du kan se bryts strängen upp vid varje mellanslag.

Dela en Python-sträng vid förekomsten av avgränsare

#1. Låt oss först dela upp `py_str` med dubbla understreck (`__`) som avgränsare.

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

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

#2. Här har `py_str` tre meningar, alla avslutas med en punkt (.).

py_str = "Jag älskar att koda. Python är coolt. Jag lär mig Python 2022"
py_str.split(sep='.')

# Utdata
['Jag älskar att koda', ' Python är coolt', " Jag lär mig Python 2022"]

▶️ När vi använder `.split()` med punkten `.` som avgränsare, får vi en lista med tre meningar.

#3. Låt oss undersöka:

  • Vad händer om avgränsaren inte finns i strängen?
  • Hur sker uppdelningen i sådana fall?

Här är ett exempel:

Vi försöker dela `py_str` med en asterisk, som inte finns i strängen.

py_str = "Den här raden innehåller ingen asterisk."
py_str.split(sep='*')

# Utdata
['Den här raden innehåller ingen asterisk.']

Eftersom ingen uppdelning är möjlig, behåller listan hela strängen.

I nästa avsnitt går vi igenom hur man använder `split()` på innehållet i en textfil.

Dela upp innehållet i en Python-fil

När man jobbar med textfiler i Python kan det vara nödvändigt att dela upp filens innehåll baserat på en avgränsare för enklare bearbetning.

Här är en textfil som exempel:

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

Kodsnutten nedan visar hur man använder split på innehållet i textfilen.

  • Koden gör följande:
  • Öppnar textfilen ’sample.txt’ med hjälp av `with`-satsen.
  • Läser in filens innehåll med `.read()`-funktionen.
  • Delar upp innehållet vid varje ellips (`…`) till en lista kallad `str_list`.

Går igenom `str_list` för att skriva ut varje sträng.

# Utdata
Detta är en textfil
Den innehåller info om
Komma igång med programmering i Python
Enligt 2022 års StackOverflow-undersökning
Python är ett av de mest älskade programmeringsspråken
Så vad väntar du på? Börja lära dig!

Här ser du resultatet.

Som övning kan du dela upp innehållet i en textfil med valfri avgränsare.

Dela en Python-sträng i bitar

En uppdelning ger två bitar; två uppdelningar ger tre.

📋 Generellt: K uppdelningar resulterar i K+1 bitar.

Detta demonstreras nedan.

Hur parametern `maxsplit` fungerar (Bild av författaren)

py_str = "Del#1  Jag är en större del, Del#2"
py_str.split(maxsplit=1)

# Utdata
['Del#1', "Jag är en större del, Del#2"]

#1. Vi sätter `maxsplit` till 1. Eftersom ingen avgränsare angetts, sker delningen vid mellanslag som standard.

Trots att den andra delen av listan innehåller mellanslag, sker ingen ytterligare uppdelning, eftersom `maxsplit` är satt till ett.

py_str = "Del#1 Del#2 Jag är en stor Del#3, fastän jag innehåller mellanslag"
py_str.split(maxsplit=2)

# Utdata
['Del#1',
 'Del#2',
 "Jag är en stor Del#3, fastän jag innehåller mellanslag"]

#2. Låt oss öka `maxsplit` till 2 och se hur uppdelningen sker.

Som tidigare, styr `maxsplit`-värdet antalet uppdelningar. Vi får tre delar, genom uppdelning vid det första och andra mellanslaget.

#3. Vad händer om `maxsplit` är större än antalet avgränsare?

py_str = "Det, finns, bara, 4, kommatecken"
py_str.split(maxsplit=8)

# Utdata
['Det,', 'finns,', 'bara,', '4,', 'kommatecken']

Här sätter vi `maxsplit` till 8, medan strängen bara har fyra kommatecken.

`split()` delar upp `py_str` vid alla fyra kommatecken. Även om du ställer in `maxsplit` till ett värde mindre än -1, säg -7, kommer uppdelningen att ske vid alla avgränsare.

Låt oss sammanfatta allt och använda både `sep` och `maxsplit`.

Dela upp en Python-sträng med en avgränsare

py_str = "Del#1, Del#2, Jag är en stor Del#3, fastän jag innehåller ett ,"
py_str.split(sep = ',',maxsplit=2)

# Utdata
['Del#1', ' Del#2', " Jag är en stor Del#3, fastän jag innehåller ett ,"]

#1. Anta att vi vill dela `py_str` i tre delar vid kommatecken. Vi ställer då `sep` till `,` och `maxsplit` till 2.

Resultatet visar att uppdelningen sker två gånger vid de två första kommatecknen.

#2. `sep` behöver inte vara ett specialtecken. Det kan vara en sekvens av tecken, som de dubbla understrykningar vi använde tidigare, eller till och med en delsträng.

py_str = "Du behöver lära dig datastrukturer, lära dig algoritmer, och lära dig mer!"
py_str.split(sep = 'lära',maxsplit=2)

# Utdata
['Du behöver ', ' dig datastrukturer, ', ' dig algoritmer, och lära dig mer!']

Vi sätter strängen ’lära’ som `sep`-argument och ser hur uppdelningen sker. Här sätter vi `maxsplit` till 2.

py_str = "Du behöver lära dig datastrukturer, lära dig algoritmer, och lära dig mer!"
py_str.split(sep = 'lära',maxsplit=-1)

# Utdata
['Du behöver ', ' dig datastrukturer, ', ' dig algoritmer, och ', ' dig mer!']

#3. För att dela `py_str` vid alla förekomster av ’lära’, använder vi `.split()` med `sep = ’lära’`—utan `maxsplit`-argumentet. Detta är detsamma som att sätta `maxsplit` till -1, som visas nedan.

Uppdelningen sker vid varje förekomst av ’lära’.

Avslutningsvis

Jag hoppas att du nu förstår hur man använder `.split()` med Python-strängar.

  • Sammanfattning av denna handledning:
  • Pythons inbyggda `.split()`-funktion delar upp en sträng till en lista av strängar.
  • Använd `string.split()` för att dela strängen vid alla mellanslag.

Använd `string.split(sep,maxsplit)` för att dela strängen max antal gånger vid förekomsten av `sep`. Den resulterande listan har `maxsplit+1` element.

Som nästa steg kan du utforska hur man kontrollerar om Python-strängar är palindromer eller anagram.