
Denna handledning tar upp de olika sätten att ersätta tecknet i en Python-sträng: med inbyggda strängmetoder, reguljära uttryck och mer.
Strängar i Python är inbyggda datastrukturer som lagrar en sekvens av Unicode-tecken. Till skillnad från vissa Python-datastrukturer, såsom listor och ordböcker, är strängar oföränderliga. Det betyder att du inte kan ändra en befintlig sträng.
Men du kanske vill manipulera strängar – ta bort inledande och efterföljande blanksteg, ändra versaler, ersätta en karaktär med en annan och mycket mer – när du arbetar med dem.
Så, hur manipulerar vi Python-strängar? Och hur ersätter vi ett tecken i en Python-sträng? Vi kommer att svara på dessa frågor i denna handledning med fokus på:
- Immutability av Python-strängar
- Python-strängmetoder för strängmanipulation
- Olika sätt att ersätta ett tecken i en sträng
Låt oss börja…
Innehållsförteckning
Immutability av Python Strings
Som nämnts är Python-strängar oföränderliga. Så du kan inte ändra en befintlig sträng på plats. du kan inte ändra en befintlig sträng på plats
Tänk till exempel på strängen ”Python-programmering!”.
Du kan komma åt ett enskilt element i strängen med hjälp av indexet och en delsträng genom att ange segmentet med början och slutet, som visas:
>>> my_str = "Python programming!" >>> my_str[0] 'P' >>> my_str[4] 'o' >>> my_str[1:9] 'ython pr' >>> my_str[9] 'o'
Säg att du vill ersätta bokstaven ’o’ med siffran ’0’.
Du vet att du har ett o vid index 4 och 9 (se kodavsnittet ovan). Men om du försöker att direkt ställa in tecknet – vid det specifika indexet – till ’0’, får du följande fel:
>>> my_str[4] = '0' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
Python tillhandahåller en uppsättning strängmetoder som verkar på en befintlig sträng och returnerar en ny sträng med de nödvändiga ändringarna.
Läs också: Python-program om strängoperationer.
Så du kan använda strängmetoderna i kombination med listförståelse, loopar och reguljära uttryck för att utföra strängmanipuleringsuppgifter. I den här handledningen kommer vi att titta på de olika sätten att ersätta ett tecken i en Python-sträng.
Ersätta en karaktär i Python-strängar
Det finns många användningsfall där du kanske vill ersätta tecken eller delsträngar i en Python-sträng. Här är några av dem:
- Textrensning: När du arbetar med textdata kan du behöva rensa texten genom att ersätta vissa tecken. Till exempel att ta bort eller ersätta specialtecken, extra blanksteg eller oönskade symboler.
- Formatering: Du kanske vill ändra formateringen av text, som att använda versaler eller konvertera text till gemener. Till exempel att säkerställa konsekvent versaler i rubriker eller rubriker.
- Datamaskering: Du behöver ofta maskera känslig information som personliga identifieringsnummer eller kreditkortsnummer för att skydda känsliga data samtidigt som formatet bevaras.
- URL:er och sökvägshantering: När du arbetar med URL:er eller filsökvägar kan du behöva byta ut vissa tecken för att säkerställa att de är korrekt formaterade och kompatibla med webbläsare eller filsystem.
Vi tar ett enkelt exempel på att ersätta ett tecken i en sträng.
Vi börjar med ett tillvägagångssätt som använder loopar och villkorliga uttalanden, och fortsätter sedan med att diskutera andra bättre metoder för att uppnå detsamma.
Låt oss ta samma exempel på att ersätta ’o’ med ’0’ i strängen ”Python-programmering!”.
Så här kan vi loopa igenom strängen med en for-loop och ersätta det specifika tecknet:
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 detta tillvägagångssätt går vi manuellt igenom varje tecken i original_strängen. Om tecknet är ’o’ lägger vi till ’0’ till new_string; annars lägger vi till samma tecken. På så sätt utför vi teckenersättning och bygger new_string.
# Output Pyth0n pr0gramming!
Att använda för loop och villkorlig förgrening med if-satser är svåra att underhålla. Speciellt när du behöver byta ut en delsträng eller flera tecken.
Det finns bättre metoder för att ersätta tecken eller en delsträng, och vi kommer att titta på dem i följande avsnitt.
#1. Använda str.replace()
Vi kan använda strängmetoden replace() för att ersätta ett tecken eller en delsträng med en annan sträng. Att använda str.replace(old, new) ersätter alla förekomster av det gamla tecknet eller delsträngen med det nya tecknet eller delsträngen.
Här använder vi metoden replace() bokstaven ’o’ med siffran ’0’ i original_strängen.
original_string = "Python programming!" new_string = original_string.replace("o", "0") print(new_string)
Den resulterande strängen är i new_string.
# Output Pyth0n pr0gramming!
#2. Använder Listförståelse och metoden join().
För att ersätta ett tecken i en Python-sträng kan vi använda listförståelse i kombination med strängmetoden join().
Låt oss se hur vi kan skriva om vårt exempel:
- Vi kan använda en listförståelse för att iterera över varje tecken i original_string. Om tecknet är ’o’ ersätter vi det med ’0’ och behåller samma tecken annars.
- Sedan använder vi str.join() för att kombinera dessa tecken till en enda sträng, vilket resulterar i new_string. Observera att detta är ett mer kortfattat alternativ till looping och villkorlig förgrening när du behöver byta ut ett enda tecken i en sträng.
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 förväntade resultatet:
# Output Pyth0n pr0gramming!
#3. Använda reguljära uttryck
En annan metod för att ersätta tecken i Python-strängar är att använda reguljära uttryck (regex). Python kommer med det inbyggda re modul för matchningsoperationer för reguljära uttryck. Med regex kan du ange ett mönster att söka efter, en sträng att söka igenom och en sträng att ersätta det matchade mönstret med.
Här använder vi sub()-funktionen från re-modulen med syntaxen re.sub(pattern, replacement, string).
import re original_string = "Python programming!" new_string = re.sub(r'o', '0', original_string) print(new_string)
Mönstret r’o’ matchar alla förekomster av bokstaven ’o’ i original_string och ersätter dem med ’0’.
# Output Pyth0n pr0gramming!
Du kan använda reguljära uttryck för att matcha mer komplexa mönster. Låt oss ta exemplet med att maskera kreditkortsnummer. Säg att vi vill ersätta alla siffror – utom de fyra sista siffrorna – med ett ”X”. Så här kan vi göra 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)
Och här är resultatet:
# Output XXXXXXXXXXXX5432
För att hålla regexet enkelt har vi inte inkluderat bindestrecket, men om du vill kan du ändra exemplet efter behov.
#4. Använda str.maketrans() och str.translate()
Metoderna str.maketrans() och str.translate() i Python används för att utföra översättning och ersättning på teckennivå i strängar.
Hur str.maketrans() fungerar
Metoden maketrans() används för att skapa en översättningstabell som anger hur tecken ska ersättas i en sträng. Du kan använda den med syntaxen: str.maketrans(x, y). Här:
- x är strängen som innehåller tecken som du vill ersätta.
- y är strängen som innehåller tecken som du vill ersätta x med.
Metoden maketrans() genererar en översättningstabell baserad på mappningarna från x till y. Du kan sedan använda den här översättningstabellen med metoden str.translate() för att utföra den faktiska ersättningen.
Hur str.translate() fungerar
Du kan använda metoden str.translate() för att tillämpa översättningstabellen skapad av str.maketrans() på en sträng. Den utför tecken-för-tecken-ersättning baserat på mappningarna som definieras i översättningstabellen. Och returnerar en ny sträng med de angivna teckenersättningarna tillämpade.
Så här kan du använda metoden translate():
new_string = original_string.translate(translation_table)
- original_string: Indatasträngen du vill ändra.
- translation_table: Översättningstabellen skapad med str.maketrans() som definierar teckenmappningarna.
Genom att kombinera både maketrans()- och str.translate()-metoderna, låt oss skriva om vårt exempel så här:
original_string = "Python programming!" translation_table = str.maketrans('o', '0') new_string = original_string.translate(translation_table) print(new_string)
Här skapar vi en översättningstabell med str.maketrans(’o’, ’0’) för att specificera att ’o’ ska ersättas med ’0’. Vi använder sedan translate()-metoden på original_string för att tillämpa denna översättning, vilket resulterar i new_string.
# Output Pyth0n pr0gramming!
Dessa metoder är användbara för uppgifter som att ersätta en karaktär och annan manipulation på karaktärsnivå i strängar.
Slutsats
Låt oss se över vad vi har lärt oss.
Python-strängar är oföränderliga. Så när du vill ersätta ett tecken i en Python-sträng kan du inte bara tilldela tecknet på ett visst index. Vi gick igenom följande metoder för att ersätta ett tecken eller flera tecken i en Python-sträng:
- Använd str.replace(old, new) för att ersätta alla instanser av gammal med ny delsträng.
- Du kan också använda listförståelse och metoden join(). Använd listförståelse för att ersätta tecken och metoden join() för att sammanfoga listan med tecken till en sträng.
- Du kan använda mönstermatchning med reguljära uttryck för att ersätta förekomster av ett tecken eller ett mönster. Använd sub()-funktionen med re.sub(pattern, replacement, string).
- Använd str.maketrans() för att få en översättningstabell och metoden translate() för att tillämpa översättningstabellen på den ursprungliga strängen.
Var noga med att koda några exempel för att förstå dessa tekniker bättre. Lär dig sedan hur du tar bort det sista tecknet från en Python-sträng.