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.