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

I den här handledningen kommer du att lära dig hur du använder Pythons split()-metod för att dela upp en sträng i en lista med strängar.

När du arbetar med Python-strängar kan du använda flera inbyggda strängmetoder för att få modifierade kopior av strängar, som att konvertera till versaler, sortera en sträng med mera. En sådan metod är .split() som delar upp en Python-sträng i en lista med strängar, och vi lär oss mer om det genom att koda exempel.

I slutet av handledningen har du lärt dig följande:

  • hur .split()-metoden fungerar
  • hur man anpassar uppdelningen med parametrarna sep och maxsplit

Låt oss börja!

Syntax för split()-metoden i Python

Här är den allmänna syntaxen för att använda Pythons split()-metod på valfri giltig sträng:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

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

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

  • sep anger avgränsaren som du vill dela strängen på. Det bör anges som en sträng.
  • maxsplit är ett heltal som anger hur många gånger du vill dela strängen.

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

  • När du inte anger sep-värdet uttryckligen, används blanksteg som standardavgränsare.
  • När du inte anger värdet för maxsplit, är det som standard -1, vilket betyder att strängen kommer att delas på alla förekomster av separatorn.

Att formulera syntaxen i klarspråk:

Metoden split() delar en sträng maxsplit antal gånger vid förekomsten av en separator som anges av parametern sep.

Nu när vi har lärt oss syntaxen för Python split()-metoden, låt oss fortsätta med att koda några exempel.

Dela upp en Python-sträng i en lista med strängar

Om du har Python 3 installerat på din maskin kan du koda med den här handledningen genom att köra följande kodsnuttar i en Python REPL.

För att starta REPL, kör ett av följande kommandon från terminalen:

$ python
$ python -i

▶️ Du kan också prova dessa exempel på adminvista.com Python-redigerare.

I det här exemplet är py_str en Python-sträng. Låt oss anropa metoden .split() på py_str utan några parametrar och observera resultatet.

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

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

Som framgår ovan delas strängen vid alla förekomster av blanksteg.

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

#1. Som ett första exempel, låt oss dela upp strängen py_str med dubbla understreck (__) som avgränsare.

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

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

#2. Låt oss ta ett annat exempel. Här har py_str tre meningar som var och en avslutas med en punkt (.).

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"]

▶️ När vi anropar metoden .split() på den här strängen, med ’.’ som separator har den resulterande listan tre meningar, som ses i ovanstående kodcell.

#3. Låt oss ställa några frågor:

  • Vad händer när separatorn aldrig förekommer i strängen?
  • Hur kommer splittringen att ske i detta fall?

Här är ett exempel:

Vi försöker dela py_str på förekomsten av asterisk

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

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

– vilket inte förekommer.

Eftersom ingen uppdelning kan göras i detta fall, innehåller den resulterande listan hela strängen.

I nästa avsnitt kommer vi att se hur vi kan använda metoden split() på innehållet i en textfil.

Dela upp innehållet i en Python-fil

När du arbetar med textfiler i Python kan du behöva dela upp filens innehåll – baserat på en separator – för enklare bearbetning.

Här är ett exempel på en textfil:

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

Kodavsnittet nedan visar hur man använder split på innehållet i exempeltextfilen.

  • Ovanstående kod gör följande:
  • Använder med kontexthanteraren för att öppna och arbeta med textfilen ’sample.txt’.
  • Läser innehållet i filen med metoden .read() på filobjektet f.
  • Delar upp innehållet vid förekomsten av separatorellipsen (…) i en lista str_list.

Går igenom str_list för att komma åt varje sträng och skriver ut den.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://adminvista.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!

Här är utgången.

Som en övning kan du prova att dela upp innehållet i en textfil på valfri separator.

Dela en Python-sträng i bitar

När du delar en sträng en gång får du två bitar; om du delar den två gånger får du tre.

📋 I allmänhet, när du delar en sträng K gånger, får du K + 1 bitar.

Detta illustreras nedan.

Hur parametern maxsplit fungerar (Bild av författaren)

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. Vi sätter maxsplit lika med 1. Vi har inte angett någon separator, så uppdelningen kommer att ske på blanksteg som standard.

Även om den andra biten i listan innehåller blanksteg, sker inte uppdelningen eftersom uppdelningen nu styrs av maxsplitvärdet för ett.

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. Låt oss öka maxsplit-värdet till 2 och observera hur uppdelningen sker i följande exempel.

Som med föregående exempel, bestämmer maxsplit-värdet antalet delningar som görs. Vi får tre bitar, splittringar efter blankstegs första och andra förekomst.

#3. Vad händer om du ställer in maxsplit till ett värde som är större än antalet förekomster av separatorn?

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

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

I följande kodcell sätter vi maxsplit den till 8 när strängen endast innehåller fyra kommatecken.

Här delar uppdelningsmetoden py_str på alla fyra förekomsterna av ett kommatecken. Även om du försöker ställa in maxsplit till ett värde mindre än -1, säg -7, kommer uppdelningen att göras på alla förekomster av separatorn.

Låt oss sedan sätta ihop allt vi har lärt oss och använda båda parametrarna sep maxsplit.

Dela en Python-sträng i bitar på en separator

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. Anta att vi behöver dela upp strängen py_str i tre bitar vid förekomsten av kommatecken (,). För att göra detta kan vi ställa in sep-värdet till ’,’ och maxsplit-värdet till 2 i metodanropet.

Som framgår av utgången sker uppdelningen två gånger på de två första förekomsterna av separatorn.

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

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!']

Låt oss ställa in strängen ’learn’ som sep-argument och se hur splittringen sker för olika värden för maxsplit. Här sätter vi maxsplit till 2.

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. Om du vill dela py_str på alla förekomster av strängen ’learn’, kan vi anropa denna .split()-metod genom att sätta sep = ’learn’—utan maxsplit-parametern. Detta motsvarar att uttryckligen sätta maxsplit-värdet till -1, som visas i kodcellen nedan.

Vi ser att splittringen sker i alla förekomster av ’lär’.

Avslutar

Jag hoppas att du nu har förstått hur du använder metoden .split() med Python-strängar.

  • Här är en sammanfattning av denna handledning:
  • Pythons inbyggda .split()-metod delar upp en sträng i en lista med strängar.
  • Använd string.split() för att dela strängen på alla förekomster av standardavgränsaren, blanksteg.

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

Som nästa steg kan du lära dig hur du kontrollerar om Python-strängar är palindromer eller anagram.