Hvordan erstatte et tegn i en streng ved hjelp av Python

Denne opplæringen dekker de forskjellige måtene å erstatte tegnet i en Python-streng: ved hjelp av innebygde strengmetoder, regulære uttrykk og mer.

Strenger i Python er innebygde datastrukturer som lagrer en sekvens av Unicode-tegn. I motsetning til enkelte Python-datastrukturer, for eksempel lister og ordbøker, er strenger uforanderlige. Det betyr at du ikke kan endre en eksisterende streng.

Det kan imidlertid være lurt å manipulere strenger – fjerne innledende og etterfølgende mellomrom, endre store bokstaver, erstatte et tegn med et annet og mye mer – når du arbeider med dem.

Så hvordan manipulerer vi Python-strenger? Og hvordan erstatter vi et tegn i en Python-streng? Vi svarer på disse spørsmålene i denne opplæringen med fokus på:

  • Uforanderlighet av Python-strenger
  • Python strengmetoder for strengmanipulering
  • Ulike måter å erstatte et tegn i en streng

La oss komme i gang…

Uforanderlighet av Python-strenger

Som nevnt er Python-strenger uforanderlige. Så du kan ikke endre en eksisterende streng på plass. du kan ikke endre en eksisterende streng på plass

Tenk for eksempel på strengen «Python-programmering!».

Du kan få tilgang til et enkelt element i strengen ved å bruke indeksen og en delstreng ved å spesifisere stykket med start og slutt, som vist:

>>> my_str = "Python programming!"
>>> my_str[0]
'P'
>>> my_str[4]
'o'
>>> my_str[1:9]
'ython pr'
>>> my_str[9]
'o'

Si at du vil erstatte bokstaven «o» med sifferet «0».

Du vet at du har en o ved indeks 4 og 9 (se kodebiten ovenfor). Men hvis du prøver å sette tegnet direkte – ved den spesifikke indeksen – til «0», får du følgende feilmelding:

>>> my_str[4] = '0'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Python gir et sett med strengmetoder som virker på en eksisterende streng og returnerer en ny streng med de nødvendige endringene.

Les også: Python-programmer på strengoperasjoner.

Så du kan bruke strengmetodene kombinert med listeforståelser, løkker og regulære uttrykk for å utføre strengmanipulasjonsoppgaver. I denne opplæringen skal vi se på de forskjellige måtene å erstatte et tegn i en Python-streng.

  13 mest populære IoT-enheter for hjem og jobb

Bytte ut et tegn i Python-strenger

Det er mange brukstilfeller der du kanskje vil erstatte tegn eller understrenger i en Python-streng. Her er noen av dem:

  • Tekstrensing: Når du arbeider med tekstdata, må du kanskje rense teksten ved å erstatte visse tegn. For eksempel å fjerne eller erstatte spesialtegn, ekstra mellomrom eller uønskede symboler.
  • Formatering: Du vil kanskje endre formateringen av tekst, for eksempel bruk av store bokstaver eller konvertere tekst til små bokstaver. For eksempel å sikre konsekvent bruk av store bokstaver i titler eller overskrifter.
  • Datamaskering: Du må ofte maskere sensitiv informasjon som personlige identifikasjonsnumre eller kredittkortnumre for å beskytte sensitive data og samtidig bevare formatet.
  • URL-er og banehåndtering: Når du arbeider med URL-er eller filbaner, må du kanskje erstatte visse tegn for å sikre at de er riktig formatert og kompatible med nettlesere eller filsystemer.

Vi tar et enkelt eksempel på å erstatte et tegn i en streng.

Vi starter med en tilnærming som bruker looper og betingede utsagn, og fortsetter for å diskutere andre bedre metoder for å oppnå det samme.

La oss ta det samme eksempelet på å erstatte «o» med «0» i strengen «Python-programmering!».

Slik kan vi gå gjennom strengen ved å bruke en for-løkke og erstatte det spesifikke tegnet:

original_string = "Python programming!"
new_string = ""
for char in original_string:
    if char == "o":
        new_string += "0"
    else:
        new_string += char
print(new_string)  

I denne tilnærmingen går vi manuelt gjennom hvert tegn i original_stringen. Hvis tegnet er «o», legger vi til «0» til new_string; ellers legger vi til samme tegn. På denne måten utfører vi tegnerstatning og bygger new_string.

# Output
Pyth0n pr0gramming!

Bruk for loop og betinget forgrening med if-setninger er vanskelig å vedlikeholde. Spesielt når du trenger å erstatte en delstreng eller flere tegn.

Det finnes bedre tilnærminger til å erstatte tegn eller en understreng, og vi skal se på dem i de følgende avsnittene.

#1. Bruke str.replace()

Vi kan bruke strengmetoden replace() for å erstatte et tegn eller en delstreng med en annen streng. Bruk av str.replace(old, new) erstatter alle forekomster av det gamle tegnet eller delstrengen med det nye tegnet eller delstrengen.

  Fjern system-, skjult- og rammeapper

Her bruker vi erstatte()-metoden bokstaven «o» med sifferet «0» i original_strengen.

original_string = "Python programming!"
new_string = original_string.replace("o", "0")
print(new_string) 

Den resulterende strengen er i new_string.

# Output
Pyth0n pr0gramming!

#2. Bruke listeforståelse og join()-metoden

For å erstatte et tegn i en Python-streng, kan vi bruke listeforståelse i forbindelse med strengmetoden join().

La oss se hvordan vi kan omskrive eksemplet vårt:

  • Vi kan bruke en listeforståelse for å iterere over hvert tegn i original_string. Hvis tegnet er «o», erstatter vi det med «0» og beholder det samme tegnet ellers.
  • Deretter bruker vi str.join() for å kombinere disse tegnene til en enkelt streng, noe som resulterer i new_string. Merk at dette er et mer kortfattet alternativ til looping og betinget forgrening når du trenger å erstatte et enkelt tegn i en streng.
original_string = "Python programming!"
new_string = ''.join(['0' if char == 'o' else char for char in original_string])
print(new_string) 

Vi får forventet utgang:

# Output
Pyth0n pr0gramming!

#3. Bruke regulære uttrykk

En annen metode for å erstatte tegn i Python-strenger er å bruke regulære uttrykk (regex). Python kommer med innebygd re modul for samsvarsoperasjoner for regulære uttrykk. Med regulært uttrykk kan du spesifisere et mønster å søke etter, en streng å søke gjennom og en streng å erstatte det matchede mønsteret med.

Her bruker vi sub()-funksjonen fra re-modulen med syntaksen re.sub(pattern, replacement, string).

import re

original_string = "Python programming!"
new_string = re.sub(r'o', '0', original_string)
print(new_string) 

Mønsteret r’o» samsvarer med alle forekomster av bokstaven «o» i original_string og erstatter dem med «0».

# Output
Pyth0n pr0gramming!

Du kan bruke regulære uttrykk for å matche mer komplekse mønstre. La oss ta eksemplet med å maskere kredittkortnumre. La oss si at vi ønsker å erstatte alle tall – unntatt de fire siste sifrene – med en «X». Slik kan vi gjøre det:

import re

def mask_credit_card(card_number):
    # Use regular expressions to match and replace characters
    masked_number = re.sub(r'\d(?=\d{4})', 'X', card_number)
    return masked_number

# Example usage:
credit_card_number = "1234567898765432"
masked_number = mask_credit_card(credit_card_number)
print(masked_number)

Og her er utgangen:

# Output
XXXXXXXXXXXX5432

For å holde regex enkel, har vi ikke inkludert bindestreken, men hvis du vil kan du endre eksemplet etter behov.

  8 beste PrestaShop-hosting for nettbutikken din

#4. Bruke str.maketrans() og str.translate()

Metodene str.maketrans() og str.translate() i Python brukes til å utføre oversettelse og erstatning på tegnnivå i strenger.

Hvordan str.maketrans() fungerer

Maketrans()-metoden brukes til å lage en oversettelsestabell som spesifiserer hvordan tegn skal erstattes i en streng. Du kan bruke den med syntaksen: str.maketrans(x, y). Her:

  • x er strengen som inneholder tegn som du vil erstatte.
  • y er strengen som inneholder tegn som du vil erstatte x med.

Maketrans()-metoden genererer en oversettelsestabell basert på tilordningene fra x til y. Du kan deretter bruke denne oversettelsestabellen med str.translate()-metoden for å utføre selve erstatningen.

Hvordan str.translate() fungerer

Du kan bruke str.translate()-metoden til å bruke oversettelsestabellen opprettet av str.maketrans() på en streng. Den utfører tegn-for-tegn-erstatning basert på tilordningene definert i oversettelsestabellen. Og returnerer en ny streng med de angitte tegnerstatningene brukt.

Slik kan du bruke translate()-metoden:

new_string = original_string.translate(translation_table)
  • original_string: Inndatastrengen du vil endre.
  • translation_table: Oversettelsestabellen opprettet ved hjelp av str.maketrans() som definerer tegntilordningene.

Ved å kombinere både maketrans()- og str.translate()-metodene, la oss omskrive eksemplet vårt slik:

original_string = "Python programming!"
translation_table = str.maketrans('o', '0')
new_string = original_string.translate(translation_table)
print(new_string)

Her lager vi en oversettelsestabell ved å bruke str.maketrans(«o», «0») for å spesifisere at «o» skal erstattes med «0». Vi bruker deretter translate()-metoden på original_string for å bruke denne oversettelsen, noe som resulterer i new_string.

# Output
Pyth0n pr0gramming!

Disse metodene er nyttige for oppgaver som å erstatte en karakter og annen manipulasjon på tegnnivå i strenger.

Konklusjon

La oss gå gjennom det vi har lært.

Python-strenger er uforanderlige. Så når du vil erstatte et tegn i en Python-streng, kan du ikke bare tilordne tegnet på nytt ved en bestemt indeks. Vi gikk gjennom følgende tilnærminger for å erstatte et tegn eller flere tegn i en Python-streng:

  • Bruk str.replace(old, new) for å erstatte alle forekomster av gammel med ny understreng.
  • Du kan også bruke listeforståelse og join()-metoden. Bruk listeforståelse for å oppnå tegnerstatning og join()-metoden for å slå sammen listen over tegn til en streng.
  • Du kan bruke mønstertilpasning med regulære uttrykk for å erstatte forekomster av et tegn eller et mønster. Bruk sub()-funksjonen med re.sub(pattern, replacement, string).
  • Bruk str.maketrans() for å få en oversettelsestabell og translate()-metoden for å bruke oversettelsestabellen på den originale strengen.

Sørg for å kode noen eksempler for å forstå disse teknikkene bedre. Deretter lærer du hvordan du fjerner det siste tegnet fra en Python-streng.