Sådan erstattes et tegn i en streng ved hjælp af Python

Denne vejledning dækker de forskellige måder at erstatte tegnet i en Python-streng: ved hjælp af indbyggede strengmetoder, regulære udtryk og mere.

Strenge i Python er indbyggede datastrukturer, der gemmer en sekvens af Unicode-tegn. I modsætning til nogle Python-datastrukturer, såsom lister og ordbøger, er strenge uforanderlige. Det betyder, at du ikke kan ændre en eksisterende streng.

Det kan dog være, du ønsker at manipulere strenge – fjerne indledende og efterfølgende hvide mellemrum, ændre store bogstaver, erstatte et tegn med et andet og meget mere – når du arbejder med dem.

Så hvordan manipulerer vi Python-strenge? Og hvordan erstatter vi et tegn i en Python-streng? Vi besvarer disse spørgsmål i denne tutorial med fokus på:

  • Uforanderlighed af Python-strenge
  • Python strengmetoder til strengmanipulation
  • Forskellige måder at erstatte et tegn i en streng

Lad os komme igang…

Uforanderlighed af Python-strenge

Som nævnt er Python-strenge uforanderlige. Så du kan ikke ændre en eksisterende streng på plads. du kan ikke ændre en eksisterende streng på plads

Overvej for eksempel strengen “Python-programmering!”.

Du kan få adgang til et enkelt element i strengen ved at bruge indekset og en understreng ved at angive udsnittet med start og slutning, som vist:

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

Lad os sige, at du vil erstatte bogstavet ‘o’ med cifferet ‘0’.

Du ved, at du har et o ved indeks 4 og 9 (se kodestykket ovenfor). Men hvis du prøver at sætte tegnet direkte – ved det specifikke indeks – til ‘0’, får du følgende fejl:

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

Python giver et sæt strengmetoder, der virker på en eksisterende streng og returnerer en ny streng med de nødvendige ændringer.

Læs også: Python-programmer om strengoperationer.

Så du kan bruge strengmetoderne kombineret med listeforståelser, loops og regulære udtryk til at udføre strengmanipulationsopgaver. I denne øvelse vil vi se på de forskellige måder at erstatte et tegn i en Python-streng.

  Sådan repareres Surface Pen, der ikke skriver på Surface Tablet

Udskiftning af et tegn i Python-strenge

Der er mange use cases, hvor du måske ønsker at erstatte tegn eller understrenge i en Python-streng. Her er nogle af dem:

  • Tekstrensning: Når du arbejder med tekstdata, skal du muligvis rense teksten ved at erstatte visse tegn. For eksempel fjernelse eller erstatning af specialtegn, ekstra mellemrum eller uønskede symboler.
  • Formatering: Du ønsker måske at ændre formateringen af ​​tekst, f.eks. at bruge store bogstaver eller konvertere tekst til små bogstaver. For eksempel at sikre ensartet brug af store bogstaver i titler eller overskrifter.
  • Datamaskering: Du bliver ofte nødt til at maskere følsomme oplysninger som personlige identifikationsnumre eller kreditkortnumre for at beskytte følsomme data og samtidig bevare formatet.
  • URL’er og stihåndtering: Når du arbejder med URL’er eller filstier, skal du muligvis erstatte visse tegn for at sikre, at de er korrekt formateret og kompatible med webbrowsere eller filsystemer.

Vi tager et simpelt eksempel på at erstatte et tegn i en streng.

Vi starter med en tilgang, der bruger loops og betingede udsagn, og fortsætter derefter med at diskutere andre bedre metoder til at opnå det samme.

Lad os tage det samme eksempel på at erstatte ‘o’ med ‘0’ i strengen “Python-programmering!”.

Sådan kan vi sløjfe gennem strengen ved hjælp af en for-løkke og erstatte det specifikke tegn:

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 tilgang går vi manuelt gennem hvert tegn i original_strengen. Hvis tegnet er ‘o’, tilføjer vi ‘0’ til new_string; ellers tilføjer vi det samme tegn. På denne måde udfører vi tegnerstatning og bygger den nye_streng.

# Output
Pyth0n pr0gramming!

Brug til loop og betinget forgrening med if-sætninger er svære at vedligeholde. Især når du skal erstatte en understreng eller flere tegn.

Der er bedre metoder til at erstatte tegn eller en understreng, og vi vil se på dem i de følgende afsnit.

#1. Brug af str.replace()

Vi kan bruge strengmetoden replace() til at erstatte et tegn eller en understreng med en anden streng. Brug af str.replace(old, new) erstatter alle forekomster af det gamle tegn eller understreng med det nye tegn eller understreng.

  Sådan downloader du Apple Maps til offlinebrug på en iPhone

Her bruger vi erstatte()-metoden bogstavet ‘o’ med cifferet ‘0’ i original_strengen.

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

Den resulterende streng er i new_string.

# Output
Pyth0n pr0gramming!

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

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

Lad os se, hvordan vi kan omskrive vores eksempel:

  • Vi kan bruge en listeforståelse til at iterere over hvert tegn i original_string. Hvis tegnet er ‘o’, erstatter vi det med ‘0’ og beholder det samme tegn ellers.
  • Derefter bruger vi str.join() til at kombinere disse tegn til en enkelt streng, hvilket resulterer i new_string. Bemærk, at dette er et mere kortfattet alternativ til looping og betinget forgrening, når du skal 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 det forventede output:

# Output
Pyth0n pr0gramming!

#3. Brug af regulære udtryk

En anden metode til at erstatte tegn i Python-strenge er at bruge regulære udtryk (regex). Python kommer med det indbyggede re modul for matchningsoperationer for regulære udtryk. Med regex kan du angive et mønster, der skal søges efter, en streng, der skal søges igennem, og en streng, der skal erstatte det matchede mønster med.

Her bruger vi sub()-funktionen fra re-modulet 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’ matcher alle forekomster af bogstavet ‘o’ i original_string og erstatter dem med ‘0’.

# Output
Pyth0n pr0gramming!

Du kan bruge regulære udtryk til at matche mere komplekse mønstre. Lad os tage eksemplet med maskering af kreditkortnumre. Lad os sige, at vi vil erstatte alle tal – undtagen de sidste fire cifre – med et ‘X’. Sådan kan vi gø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 outputtet:

# Output
XXXXXXXXXXXX5432

For at holde regex simpelt, har vi ikke inkluderet bindestregen, men hvis du vil, kan du ændre eksemplet efter behov.

  Hvordan (og hvorfor) tilmeldes Google Recording Storage

#4. Brug af str.maketrans() og str.translate()

Metoderne str.maketrans() og str.translate() i Python bruges til at udføre oversættelse og erstatning på tegnniveau i strenge.

Hvordan str.maketrans() virker

Maketrans()-metoden bruges til at oprette en oversættelsestabel, der specificerer, hvordan tegn skal erstattes i en streng. Du kan bruge det med syntaksen: str.maketrans(x, y). Her:

  • x er den streng, der indeholder tegn, som du vil erstatte.
  • y er den streng, der indeholder tegn, som du vil erstatte x med.

Maketrans()-metoden genererer en oversættelsestabel baseret på tilknytningerne fra x til y. Du kan derefter bruge denne oversættelsestabel med metoden str.translate() til at udføre den faktiske udskiftning.

Hvordan str.translate() virker

Du kan bruge metoden str.translate() til at anvende oversættelsestabellen oprettet af str.maketrans() på en streng. Den udfører tegn-for-tegn-erstatning baseret på de tilknytninger, der er defineret i oversættelsestabellen. Og returnerer en ny streng med de angivne tegnerstatninger anvendt.

Sådan kan du bruge translate()-metoden:

new_string = original_string.translate(translation_table)
  • original_string: Den inputstreng, du vil ændre.
  • translation_table: Oversættelsestabellen oprettet ved hjælp af str.maketrans(), der definerer tegntilknytningerne.

Ved at kombinere både maketrans() og str.translate() metoderne, lad os omskrive vores eksempel sådan:

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

Her opretter vi en oversættelsestabel ved hjælp af str.maketrans(‘o’, ‘0’) for at angive, at ‘o’ skal erstattes af ‘0’. Vi bruger derefter translate()-metoden på original_string til at anvende denne oversættelse, hvilket resulterer i new_string.

# Output
Pyth0n pr0gramming!

Disse metoder er nyttige til opgaver som at erstatte en karakter og anden manipulation på tegnniveau i strenge.

Konklusion

Lad os gennemgå, hvad vi har lært.

Python-strenge er uforanderlige. Så når du vil erstatte et tegn i en Python-streng, kan du ikke bare gentildele tegnet ved et bestemt indeks. Vi gennemgik følgende tilgange til at erstatte et tegn eller flere tegn i en Python-streng:

  • Brug str.replace(old, new) til at erstatte alle forekomster af gammel med ny understreng.
  • Du kan også bruge listeforståelse og join()-metoden. Brug listeforståelse for at opnå tegnerstatning og join()-metoden til at samle listen over tegn til en streng.
  • Du kan bruge mønstertilpasning med regulære udtryk til at erstatte forekomster af et tegn eller et mønster. Brug sub()-funktionen med re.sub(pattern, replacement, string).
  • Brug str.maketrans() for at få en oversættelsestabel og translate()-metoden til at anvende oversættelsestabellen på den originale streng.

Sørg for at kode nogle eksempler for at forstå disse teknikker bedre. Lær derefter, hvordan du fjerner det sidste tegn fra en Python-streng.