Sostituisci stringa in Python | Sostituisci stringa Python [2022]

Pubblicato: 2021-01-02

La sostituzione di caratteri e stringhe in Python è un compito cruciale quando si tratta di pulizia dei dati o elaborazione del testo. I tuoi dati potrebbero presentare problemi di formattazione con caratteri inutili che devono essere rimossi, le categorie potrebbero avere problemi di ortografia, ecc. Inoltre, durante la preelaborazione del testo per problemi basati su NLP, la sostituzione delle stringhe è il passaggio più semplice e importante durante la preparazione dei dati testuali.

In questo tutorial, esamineremo diversi modi per sostituire diversi tipi di stringhe. Se sei interessato ad approfondire la scienza dei dati, dai un'occhiata alle nostre certificazioni di scienza dei dati. Alla fine di questo tutorial, avrai la conoscenza di quanto segue:

  • Python replace() metodo
  • Metodo Regex sub()
  • join() e filter()
  • Sostituzione di dati numerici nelle stringhe

Sommario

Python sostituisci()

Il metodo replace(old_str, new_str, count) consiste di 3 argomenti:

  • old_str: la stringa o una parte della stringa che deve essere sostituita
  • new_str: la stringa con cui la vecchia stringa deve essere sostituita
  • count: il conteggio delle volte in cui la stringa specifica deve essere sostituita

Esaminiamo alcuni esempi per capire il funzionamento.

Sostituzione singola

Mystr = "Questa è una stringa di esempio"
Newstr = Mystr.replace( 'è' , 'era' )

#Produzione:
Era una stringa di esempio

Se ricordi, le stringhe in Python sono immutabili. Quindi, quando chiamiamo il metodo replace, essenzialmente crea un altro oggetto stringa con i dati modificati. Inoltre, non abbiamo specificato il parametro count nell'esempio precedente. Se non specificato, il metodo di sostituzione sostituirà tutte le occorrenze della stringa.

Sostituzione multipla

Mystr = "Questa è una stringa di esempio"
Newstr = Mystr.replace( “s” , “X” )

#Produzione:
ThiX iX un Xample Xtring

Molteplici sostituiscono le prime n occorrenze

Se vuoi solo le prime N occorrenze,

Mystr = "Questa è una stringa di esempio"
Newstr = Mystr.replace( “s” , “X” , 3 )

#Produzione:
ThiX iX una stringa Xample

Sostituzione di più stringhe

Negli esempi precedenti, abbiamo sostituito una stringa un numero diverso di volte. Ora cosa succede se si desidera sostituire stringhe diverse nella stessa stringa grande. Possiamo scrivere una funzione efficace per esso e farlo usando lo stesso metodo.

Considera l'esempio come sopra, ma ora vogliamo sostituire "h", "is" e "ng" con "X".

def MultipleStrings (mainStr, strReplaceList, newStr) :
# Iterazione sulle stringhe da sostituire
per elem in strReplaceList :
# Verifica se la stringa è nella stringa principale
se elem in mainStr :
# Sostituisci la stringa
mainStr = mainStr.replace(elem, newStr)

restituisce mainStr

Mystr = "Questa è una stringa di esempio"
Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , “X” )

#Produzione:
TXX X un campione striX

Leggi: Tutorial Python

Sostituzione con regex

L'espressione regolare di Python è un modulo specifico per la gestione dei dati di testo, sia che si tratti di trovare sottostringhe, sostituire stringhe o altro. Regex ha la funzione sub() per trovare e sostituire/sostituire facilmente le sottostringhe. Esaminiamo la sua sintassi e alcuni casi d'uso.

La funzione regex.sub(pattern, replacement, original_string) accetta 3 argomenti:

  • pattern: la sottostringa che deve essere abbinata e sostituita.
  • sostituzione: può essere una stringa che deve essere inserita o una funzione richiamabile che restituisce il valore che deve essere inserito.
  • original_string: la stringa principale in cui deve essere sostituita la sottostringa.

Come il metodo di sostituzione, regex crea anche un altro oggetto stringa con la stringa modificata. Esaminiamo alcuni esempi di lavoro.

Rimozione degli spazi bianchi

Gli spazi bianchi possono essere trattati come caratteri speciali e sostituiti con altri caratteri. Nell'esempio seguente, intendiamo sostituire gli spazi bianchi con "X".

importare ri
Mystr = "Questa è una stringa di esempio"
# Sostituisci tutti gli spazi bianchi in Mystr con 'X'
Newstr = re.sub( r”\s+” , 'X' , Mystr)

#Produzione:
ThisXisXaXsampleXstring


Come vediamo, tutti gli spazi bianchi sono stati sostituiti. Il modello è dato da r"\s+" che indica tutti i caratteri degli spazi bianchi.

Rimozione di tutti i caratteri speciali

Per rimuovere tutti i caratteri speciali, passeremo uno schema che corrisponde a tutti i caratteri speciali.

importare ri
stringa di importazione
Mystr = “Tempo@@&[(000)]%%$@@66isit$$#$%-+Str”
modello = r'[' + stringa.punteggiatura + ']'
# Sostituisci tutti i caratteri speciali in una stringa con X
Newstr = re.sub(modello, 'X' , Mystr)

#Produzione:
TempoXXXXXX000XXXXXXX66isitXXXXXXXStr

Rimozione della sottostringa come case insensitive

Nei dati reali, potrebbero esserci casi in cui potrebbero esserci molte versioni della stessa parola con caratteri maiuscoli e minuscoli diversi. Per rimuoverli tutti, mettere tutte le parole separatamente poiché lo schema non sarebbe efficace. La funzione regex sub() accetta il flag re.IGNORECASE per ignorare i casi. Vediamo come funziona.

importare ri
Mystr = “Questo È un campione Istring”
# Sostituisci la sottostringa in una stringa con un approccio senza distinzione tra maiuscole e minuscole
Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE)

#Produzione:
Th** ** un campione **tring

Rimozione di più caratteri usando regex

La funzione regex può rimuovere facilmente più caratteri da una stringa. Di seguito è riportato un esempio.

importare ri
Mystr = "Questa è una stringa di esempio"
modello = r'[hsa]'
# Rimuove i caratteri 'h', 's' e 'a' da una stringa
Newstr = re.sub(modello, , Mystr)

#Produzione:
Ti prego

Sostituzione usando join()

Un altro modo per rimuovere o sostituire i caratteri consiste nell'iterare la stringa e verificarli rispetto ad alcune condizioni.

charList = [ 'h' , 's' , 'a' ]
Mystr = "Questa è una stringa di esempio"
# Rimuove tutti i caratteri nell'elenco dalla stringa
Newstr = .join((elem for elem in Mystr se elem not in charList ))

#Produzione:
Ti prego

Sostituzione usando join() e filter()

L'esempio sopra può essere fatto anche usando la funzione di filtro.

Mystr = "Questa è una stringa di esempio"
charList = [ 'h' , 's' , 'a' ]
# Rimuove tutti i caratteri nell'elenco dalla stringa
Newstr = “” .join(filter( lambda k: k non in charList , Mystr))

#Produzione:
Ti sto provando

Da leggere: affascinanti applicazioni Python nel mondo reale

Sostituzione dei numeri

Molte volte i dati numerici sono presenti anche nelle stringhe che potrebbero dover essere rimosse ed elaborate separatamente come caratteristica diversa. Esaminiamo alcuni esempi per vedere come questi possono essere implementati.

Usando l'espressione regolare

Considera la stringa sottostante da cui dobbiamo rimuovere i dati numerici.

Mystr = "Stringa campione9211 dell'anno 20xx"
modello = r'[0-9]'
# Abbina tutte le cifre nella stringa e sostituiscile con una stringa vuota
Newstr = re.sub(modello, “” , Mystr)

#Produzione:
Stringa di esempio dell'anno xx

Nel codice sopra, utilizziamo il modello di corrispondenza r'[0-9]' per abbinare tutte le cifre.

Utilizzo della funzione join()

Possiamo anche iterare sulla stringa e filtrare le cifre usando il metodo isdigit() che restituisce False per gli alfabeti.

Mystr = "Stringa campione9211 dell'anno 20xx"
# Scorre i caratteri nella stringa e unisce tutti i caratteri tranne le cifre
Newstr = “” .join((item for item in Mystr se non item.isdigit()))

#Produzione:
Stringa di esempio dell'anno xx

Utilizzo di join() e filter()

Allo stesso modo, possiamo anche inserire la condizione di filtro nella funzione di filtro per restituire solo i caratteri che restituiscono True .

Mystr = "Stringa campione9211 dell'anno 20xx"

# Filtra tutte le cifre dai caratteri nella stringa e unisci i caratteri rimanenti
Newstr = “” .join(filter( lambda item: not item.isdigit(), Mystr))

#Produzione:
Stringa di esempio dell'anno xx

Prima che tu vada

Abbiamo coperto molti esempi che mostrano modi diversi per rimuovere o sostituire caratteri/spazi/numeri da una stringa. Ti consigliamo vivamente di provare più esempi e modi diversi per fare gli esempi sopra e anche più esempi tuoi.

Se sei curioso di conoscere Python, la scienza dei dati, dai un'occhiata all'Executive PG Program in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore , 1 contro 1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Qual è la necessità del metodo di sostituzione delle stringhe in Python?

Questa funzione diventa molto utile quando si applicano tecniche di pulizia dei dati. I caratteri non necessari o inutili possono essere facilmente rimossi utilizzando questa funzione. La sostituzione di stringhe o caratteri non viene utilizzata solo nella pulizia dei dati, ma anche nell'elaborazione dei problemi di NLP.
Disporre di questi tipi di metodi per gestire le stringhe è importante poiché l'intero campo della scienza dei dati si occupa di enormi quantità di dati.

Quali sono i vantaggi dell'utilizzo dei tipi di dati stringa?

Le stringhe sono utili in quanto è possibile archiviare facilmente grandi quantità di dati utilizzando questo tipo di dati. Python supporta un buon numero di metodi utili per eseguire operazioni sulle stringhe. Inoltre, le stringhe sono modificabili in Python, il che riduce la generazione di errori e sono anche meno costose.
La stringa è uno dei tipi di dati integrati più utilizzati in Python. Non solo in Python, ma anche molti altri linguaggi supportano questo come tipo di dati predefinito e supportano vari metodi per operare su di essi.