Sostituisci più caratteri in una stringa in Python
-
Usa
str.replace()
per sostituire più caratteri in Python -
Usa
re.sub()
ore.subn()
per sostituire più caratteri in Python -
translate()
emaketrans()
per sostituire più caratteri in Python
Questo tutorial mostra come sostituire più caratteri in una stringa in Python.
Supponiamo di voler rimuovere i caratteri speciali in una stringa e sostituirli con spazi bianchi.
- L’lista dei caratteri speciali da rimuovere sarebbe
!#$%^&*()
. - Inoltre, vogliamo sostituire le virgole
,
con spazi bianchi. - Il testo di esempio che manipoleremo:
A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$
Usa str.replace()
per sostituire più caratteri in Python
Possiamo usare il metodo replace()
del tipo di dati str
per sostituire le sottostringhe in un output diverso.
replace()
accetta due parametri, il primo parametro è il pattern regex con cui vuoi far corrispondere le stringhe, e il secondo parametro è la stringa di sostituzione per le stringhe corrispondenti.
È anche un terzo parametro opzionale in replace()
che accetta un numero intero per impostare il count
massimo di sostituzioni da eseguire. Se metti 2
come parametro count
, la funzione replace()
corrisponderà e sostituirà solo 2 istanze all’interno della stringa.
str.replace('Hello', 'Hi')
sostituirà tutte le istanze di Hello
in una stringa con Hi
. Se hai una stringa Hello World
e esegui la funzione di sostituzione su di essa, diventerebbe Hi World
dopo l’esecuzione.
Usiamo replace
sul testo di esempio che abbiamo dichiarato sopra. Prima rimuovendo i caratteri speciali ripetendo ogni carattere e sostituendoli con una stringa vuota, quindi convertendo le virgole in spazi bianchi.
txt = "A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$"
def processString(txt):
specialChars = "!#$%^&*()"
for specialChar in specialChars:
txt = txt.replace(specialChar, "")
print(txt) # A,Quick,brown,fox,jumped,over,the,lazy,dog
txt = txt.replace(",", " ")
print(txt) # A Quick brown fox jumped over the lazy dog
Ciò significa che qualsiasi cosa all’interno della parentesi quadra di spChars
verrà sostituita da una stringa vuota utilizzando txt.replace(spChars, '')
.
Il risultato della stringa della prima funzione replace()
sarebbe quindi:
A, Quick, brown, fox, jumped, over, the, lazy, dog
La prossima chiamata a replace()
sostituirà tutte le istanze di virgola ,
in un unico spazio bianco:
A Quick brown fox jumped over the lazy dog
Usa re.sub()
o re.subn()
per sostituire più caratteri in Python
In Python, puoi importare il re
module, che ha una quantità di operazioni di corrispondenza delle espressioni per regex da utilizzare.
Due di tali funzioni all’interno di re
sono sub()
e subn()
.
Dichiariamo un altro esempio di stringa per questi metodi. Supponiamo di voler sostituire tutti i numeri all’interno di una stringa in X:
txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."
re.sub()
per sostituire più caratteri in Python
La funzione ha 3 argomenti principali. Il primo argomento accetta un pattern regex, il secondo argomento è una stringa per sostituire i pattern corrispondenti e il terzo è la stringa con cui operare.
Crea una funzione converti tutti i numeri all’interno di una stringa in X.
import re
txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."
def processString3(txt):
txt = re.sub("[0-9]", "X", txt)
print(txt)
processString3(txt)
Produzione:
Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.
re.subn()
per sostituire più caratteri in Python
Questa funzione è essenzialmente la stessa di re.sub()
ma restituisce invece una tupla della stringa convertita e il numero di sostituzioni effettuate.
import re
txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."
def processString4(txt):
txt, n = re.subn("[0-9]", "X", txt)
print(txt)
processString4(txt)
Produzione:
Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.'
txt, n = re.subn("[0-9]", "X", txt)
Nello snippet di codice sopra, la stringa elaborata è assegnata a txt
e il contatore di sostituzione è assegnato a n
.
re.subn()
è utile se vuoi annotare quanti gruppi di pattern hai manipolato come metriche o per ulteriori elaborazioni.
translate()
e maketrans()
per sostituire più caratteri in Python
translate()
e maketrans()
usano un approccio diverso dall’espressione regolare, fa uso di dizionari per mappare i vecchi a nuovi valori.
maketrans()
accetta 3 parametri o un singolo dizionario di mappature:
str1
- Stringa di caratteri da sostituirestr2
- Stringa di sostituzioni per i caratteri soprastr3
- Stringa di caratteri da eliminare
maketrans()
una tabella di mappatura tra la stringa originale e la sua sostituzione.
translate()
accetta tutto ciò che restituisce maketrans()
e quindi genera la stringa tradotta.
Supponiamo di voler convertire tutte le vocali minuscole all’interno di una stringa in maiuscole ed eliminare ogni x, yez trovata nella stringa.
txt = "Hi, my name is Mary. I like zebras and xylophones."
def processString5(txt):
transTable = txt.maketrans("aeiou", "AEIOU", "xyz")
txt = txt.translate(transTable)
print(txt)
processString5(txt)
Produzione:
HI, m nAmE Is MAr. I lIkE EbrAs And lOphOnEs.
translate()
ha convertito tutte le vocali minuscole in versioni maiuscole e ha rimosso tutte le istanze di x, y e z.
Un altro approccio per utilizzare questi metodi consiste nell’usare un singolo dizionario di mappature invece di 3 argomenti.
def processString6(txt):
dictionary = {
"a": "A",
"e": "E",
"i": "I",
"o": "O",
"u": "U",
"x": None,
"y": None,
"z": None,
}
transTable = txt.maketrans(dictionary)
txt = txt.translate(transTable)
print(txt)
Questo produrrà comunque lo stesso output di processString5
ma è implementato con i dizionari. Puoi usare tutto ciò che è più conveniente per te.
In sintesi, ci sono diversi modi per sostituire più caratteri in una stringa utilizzando funzioni incorporate o funzioni da librerie importate in Python.
Il metodo più comune è usare replace()
. Anche re.sub()
e subn()
sono abbastanza facili da usare e da imparare. translate()
utilizza un approccio diverso poiché non si basa su espressioni regolari per eseguire la manipolazione delle stringhe, ma si basa su dizionari e mappe.
Se vuoi, puoi anche eseguire manualmente il loop sulla stringa usando i cicli for e aggiungere le tue condizioni per sostituire e usare semplicemente substring()
o split()
, ma sarebbe molto inefficiente e ridondante. Python offre funzioni esistenti per fare il lavoro per te, il che è molto più facile che fare il lavoro sporco da solo.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArticolo correlato - Python String
- Come controllare una stringa è vuota in modo pitonico
- Converti una stringa in nome variabile in Python
- Come rimuovere gli spazi bianchi in una stringa in Python
- Estrai numeri da una stringa in Python
- Come convertire una stringa in datario in Python
- Come convertire una stringa in minuscola in Python 2 e 3