Hvordan dele strenger i Python

Hvordan dele strenger i Python
Denne artikkelen vil forklare hvordan du kan dele strenger i Python ved å bruke “Split ()” og “Partition ()” -metoder. Disse metodene er spesielt nyttige hvis du vil konvertere en setning eller en gruppe ord til parsable og iterable python -typer. Alle kodeprøver i denne guiden er testet med Python versjon 3.8.6.

Delt metode

"Split ()" -metoden kan brukes til å dele opp ord ved hjelp av en bruker spesifisert separator. Den returnerer en liste over delte ord uten å inkludere separatoren. Hvis ingen separator er spesifisert av brukeren, brukes Whitespace (en eller flere) som en enkelt separator.

For eksempel vil koden nedenfor returnere “['Linux', 'Hint']” som output:

tekst = "linux hint"
tekst.dele()

Koden nedenfor vil returnere “['Linuxhint', 'com']" som output når ".”Brukes som separator:

tekst = "linuxhint.com "
tekst.dele(".)

Separatoren trenger ikke å være en eneste karakter. Den delte metoden tar to argumenter:

  • SEP: Separator som skal brukes til splitting
  • MaxSplit: Antall splitter å gjøre

Begge disse argumentene er valgfrie. Som nevnt ovenfor, hvis "SEP" -argumentet ikke er spesifisert, brukes Whitespace som en separator for splitting. Argumentet "MaxSplit" har en standardverdi på "-1", og det deler alle forekomster som standard. Tenk på koden nedenfor:

tekst = "linuxhint.co.oss"
tekst.dele(".)

Det vil returnere “['Linuxhint', 'Co', 'Us']" som output. Hvis du vil slutte å splitte ved første forekomst av separatoren, kan du spesifisere "1" som "MaxSplit" -argumentet.

tekst = "linuxhint.co.oss"
tekst.dele(".", 1)

Koden over vil returnere “['Linuxhint', 'CO.oss '] ”som produksjon. Bare spesifiser antall forekomster der du vil at den delte prosessen skal stoppe som det andre argumentet.

Merk at hvis det er påfølgende separatorer, vil en tom streng være for returnert for de gjenværende separatorene etter den første delingen (når "maxsplit" -argumentet ikke brukes):

tekst = "linuxhint ... com"
tekst.dele(".")

Koden over vil returnere “['Linuxhint',”, 'com'] ”som utdata. I tilfelle du vil fjerne tomme strenger fra den resulterende listen, kan du bruke følgende listeforståelsesuttalelse:

tekst = "linuxhint ... com"
Resultat = tekst.dele(".")
Resultat = [element for vare i resultatet hvis du var != ""]
trykk (resultat)

Du vil få “['Linuxhint', 'com']” som utdata etter å ha kjørt ovennevnte kodeprøve.

Merk at metoden “Split ()” beveger seg fra venstre til høyre til delte strenger til ord. Hvis du vil dele streng fra høyre til venstre retning, bruk "rsplit ()" i stedet. Dens syntaks, bruk og argumenter er nøyaktig den samme som "split ()" -metoden.

Hvis det ikke finnes noen separator i strengen mens du bruker "Split ()" eller "RSPlit ()" -metoder, returneres den originale strengen som eneste listeelement.

Partisjonsmetode

"Partition ()" -metoden kan brukes til å dele opp strenger, og den fungerer identisk med "split ()" -metoden med noen forskjeller. Den mest bemerkelsesverdige forskjellen er at den beholder separatoren og inkluderer den som et element i den resulterende tupelen som inneholder splittede ord. Dette er spesielt nyttig hvis du vil dele strengen i et iterable objekt (tuple i dette tilfellet) uten å fjerne noen originale tegn. Tenk på koden nedenfor:

tekst = "linuxhint.com "
Resultat = tekst.skillevegg(".")
trykk (resultat)

Ovennevnte kodeprøve vil returnere “('Linuxhint', '.',' com ')' som utdata. Hvis du vil at resultatet skal være av listetype, bruk følgende kodeprøve i stedet:

tekst = "linuxhint.com "
Resultat = liste (tekst.skillevegg("."))
trykk (resultat)

Du bør få “['Linuxhint', '.',' com ']' som utdata etter å ha kjørt ovennevnte kodeprøve.

Metoden “Partition ()” tar bare ett argument kalt “SEP”. Brukere kan spesifisere en separator med hvilken som helst lengde. I motsetning til "split ()" -metoden, er dette argumentet obligatorisk, slik at du ikke kan utelate separatoren. Du kan imidlertid spesifisere Whitespace som en separator.

Merk at partisjonsmetoden stopper ved første forekomst av separatoren. Så hvis strengen din inneholder flere separatorer, vil metoden “Partition ()” ignorere alle andre forekomster. Her er et eksempel som illustrerer dette:

tekst = "linuxhint.co.oss"
Resultat = liste (tekst.skillevegg("."))
trykk (resultat)

Kodeprøven vil produsere “['Linuxhint', '.',' CO.oss '] ”som produksjon. Hvis du vil dele i alle forekomster av separatoren og inkludere separatoren i den endelige listen, kan det hende du må bruke et "vanlig uttrykk" eller "regex" -mønster. For eksemplet som er nevnt over, kan du bruke et regex -mønster på følgende måte:

Import re
tekst = "linuxhint.co.oss"
Resultat = re.dele("(\.) ", tekst)
trykk (resultat)

Du vil få “['Linuxhint', '.',' CO ','.',' oss ']' som output etter å ha utført kodeprøven ovenfor. Dot -karakteren er rømt i Regex -uttalelsen nevnt ovenfor. Merk at mens eksemplet over fungerer med et enkelt prikk -tegn, fungerer det kanskje ikke med komplekse separatorer og komplekse strenger. Det kan hende du må definere ditt eget regex -mønster avhengig av brukssak. Eksemplet er nettopp nevnt her for å gi deg en ide om prosessen med å beholde separatoren i den endelige listen ved hjelp av Regex -setninger.

"Partition ()" -metoden kan noen ganger etterlate tomme strenger, spesielt når separatoren ikke finnes i strengen som skal deles. I slike tilfeller kan du bruke listeforståelsesuttalelser for å fjerne tomme strenger, som forklart i delen “Split ()”.

tekst = "linuxhint"
Resultat = liste (tekst.skillevegg("."))
Resultat = [element for vare i resultatet hvis du var != ""]
trykk (resultat)

Etter å ha kjørt ovennevnte kode, bør du få “['Linuxhint']” som utdata.

Konklusjon

For enkle og enkle splitt. For komplekse strenger og separatorer, må du bruke Regex -utsagn.