Site icon Tosolini.info

Python: rimuovere spazi da una stringa

Le stringhe in Python sono immutabili, vale a dire che il valore di una stringa inizializzata non può essere cambiata. Quando effettuiamo dei cambiamenti verrà ritornata una nuova stringa con il nuovo valore. Questo significa che possiamo assegnare una stringa ad una variabile, e successivamente riscrivere (ovvero ri-assegnare) il contenuto della variabile con un altra stringa.

In questo caso vediamo come fare per eliminare gli spazi da una stringa, non entro nei motivi per cui può essere necessario farlo, quello dipende dal progetto e dalle esigenze a cui stiamo lavorando.

Quindi, se la stringa è immutabile, la prima cosa da fare è assegnare tale stringa ad una variabile:

s = " Ciao sono una stringa di Python 3"

Questo passaggio sarà utile perché abbiamo virtualmente “ingabbiato” il contenuto dentro una variabile che però possiamo cambiare. Un primo comando ci permette ad esempio di eliminare il solo spazio che intercorre tra l’inizio della stringa e il primo carattere. Questa funzione si chiama strip e si usa così:

>>> s = " Ciao sono una stringa di Python 3"
>>> s.strip()
'Ciao sono una stringa di Python 3'

Come si può apprezzare, il comando in effetti ha eliminato lo spazio iniziale, pur mantenendo gli spazi tra le parole restanti.

E’ molto probabile però che tu sia interessato a sapere come eliminare qualsiasi spazio, per questo è necessario utilizzare “replace” indicando però cosa dobbiamo rimpiazzare e come lo dobbiamo fare.

>>> s.replace(" ", "")
'CiaosonounastringadiPython3'

Come si può vedere abbiamo indicato, tra le virgolette, uno spazio come primo valore di replace, e dopo l’intervallo di una virgola, il valore che volevamo ottenere, ovvero due virgolette unite ad indicare l’assenza di spazi. Questo in effetti si è tradotto nella totale eliminazione di qualsivoglia spazio all’interno della variabile.

Prendiamo in esame un caso più difficile, ovvero abbiamo del testo dove per vari motivi abbiamo degli spazi consecutivi. Quello che vogliamo ottenere è una normalizzazione del testo dove appunto gli spazi in eccedenza vengono eliminati, lasciando solo quelli corretti. In questo caso andremo ad utilizzare il comando “join” che permette di concatenarlo al comando “split“. Per questo esempio creiamo una nuova stringa che contiene sia spazi corretti, che sequenze di spazi consecutivi totalmente casuali nel numero.

>>> s2 = "Sono una    stringa con spazi ->    a    casaccio"
>>> " ".join(s2.split())
'Sono una stringa con spazi -> a casaccio'

Come si può notare il risultato è proprio quello che volevamo ottenere. Si noti che prima di join ho indicato proprio il tipo di carattere, lo spazio, che ho utilizzato come “matrice” da concatenare al comando split. Quest’ultimo in realtà è molto utilizzato per creare delle liste da una stringa, infatti se dato da solo avrebbe creato una lista:

>>> s2.split()
['Sono', 'una', 'stringa', 'con', 'spazi', '->', 'a', 'casaccio']

Ma utilizzato con join permette di arrivare ad un ragguardevole risultato di normalizzazione che altrimenti sarebbe complesso da raggiungere.

Exit mobile version