In questa pagina

Stringhe Python: convertire, pulire, cercare e formattare

Le stringhe sono il tipo di dato che tocchi più spesso in Python: l’input dell’utente, il contenuto dei file, le pagine web e le righe dei CSV arrivano tutti come testo. È facile sottovalutarle, perché una stringa Python è immutabile: nessun metodo la modifica sul posto; ogni operazione restituisce una nuova stringa. Questa pagina organizza tutte le 115 guide DelftStack sulle stringhe in base al lavoro che stai facendo, lungo quattro linee di attività: convertire il testo in altri tipi e viceversa, ripulire i caratteri che non appartengono, cercare e controllare cosa contiene una stringa, e formattare o sostituire il testo per l’output.

Operazioni sulle stringhe Python a colpo d’occhio: convertire, pulire, cercare e formattare il testo

Il percorso di apprendimento delle stringhe

Inizia con cinque minuti di basi: come si costruiscono le stringhe, come si indicizzano e si affettano, e perché l’immutabilità significa che devi sempre conservare il valore restituito. Poi impara a cercare e ripulire: find(), l’operatore in, strip() e replace() coprono la maggior parte del lavoro quotidiano sul testo. Passa poi alla conversione, dove le stringhe si scambiano di posto con liste, numeri, dizionari e byte. Finisci con la formattazione e la sostituzione, dove le f-string sono la scelta predefinita e gli stili più vecchi compaiono solo dove guadagnano ancora il loro posto. Ogni passo qui sotto è un gruppo di questa pagina, nell’ordine in cui impararli.

Basi in cinque minuti: creare, unire e ripetere

Una stringa è una sequenza di caratteri tra virgolette singole o doppie; le virgolette triple si estendono su più righe, e l’indicizzazione più l’affettamento leggono qualsiasi parte. Due fatti fanno la maggior parte del lavoro: len() misura una stringa, e costruirne una più lunga produce sempre un nuovo valore.

  • How to Repeat String N Times in Python — Moltiplica con * per un numero fisso di copie, poi ripete e affetta per raggiungere una lunghezza obiettivo esatta, convalidando sorgenti vuote e lunghezze negative.
  • How to Copy String in Python — Sei vie per duplicare — concatenazione con stringa vuota, affettamento completo, str(), %, format() e f-string — dopo aver spiegato perché l’immutabilità fa sì che entrambe le variabili condividano un unico valore.
  • Crea una stringa multilinea in Python — Virgolette triple per un vero testo su più righe, barra rovesciata e concatenazione tra parentesi per un’unica riga logica, e textwrap.fill() per un output a larghezza fissa.
  • Aggiungi una stringa all’altra in Python — + contro str.join(); join() vince con molti pezzi perché ogni + costruisce una nuova stringa intermedia.

Convertire: stringhe in liste, numeri e ritorno

La conversione è dove il lavoro sulle stringhe guadagna il suo valore: i dati arrivano come testo e vengono usati come qualcos’altro. Le liste sono la porta più trafficata, i numeri la successiva; i contenitori si appiattiscono con str() o join(), e i byte attraversano solo tramite codifiche esplicite. Un vicino vive altrove: convertire un datetime in una stringa appartiene alle guide Datetime — vedi la sezione Datetime del pilastro Python.

Pulire ed eliminare: rimuovi ciò che non appartiene

La pulizia è il terreno di casa di questo cluster: pagine raschiate, esportazioni e input dell’utente arrivano con caratteri mai invitati. Scegli in base alla forma dello sporco: replace() per una sottostringa nota, translate() con una tabella per un intero insieme di caratteri in una volta sola, ed espressioni regolari quando lo sporco è un modello, non un letterale.

  • Ways to Remove xa0 From a String in Python — Due attacchi allo spazio unificatore invisibile: la scomposizione con unicodedata.normalize("NFKD", ...) e un replace("\xa0", " ") diretto.
  • How to Remove Commas From String in Python — replace(",", "") per ogni virgola, l’argomento count solo per la prima, re.sub() per il lavoro sui modelli.
  • Elimina la punteggiatura da una stringa in Python — Il kit completo: un filtro contro string.punctuation, la sostituzione con l’espressione regolare [^\w\s], e una veloce tabella str.translate() costruita da maketrans().
  • Rimuovi virgolette dalla stringa in Python — replace() cancella le virgolette ovunque; strip('"') rifila solo la coppia che circonda, lasciando intatte le virgolette interne.
  • Rimuovi caratteri speciali dalla stringa in Python — Definisce prima cosa significa «speciale», poi applica un filtro isalnum(), un insieme translate(), o un’espressione regolare solo ASCII.
  • Rimuovi \n dalla stringa in Python — replace() per le nuove righe, split() più join() per ricucire le righe con spazi singoli, espressioni regolari per gli spazi bianchi misti.
  • Rimuovi l’ultimo carattere dalla stringa in Python — L’affettamento lo risolve: s[:-1] elimina l’ultimo carattere e l’indicizzazione negativa si generalizza agli ultimi tre.

Cercare, controllare e contare

La ricerca è la più grande domanda insoddisfatta di questo cluster: i lettori conoscono il carattere che vogliono e hanno bisogno della sua posizione, del suo conteggio, o di una risposta sì o no. Mantieni netta la divisione del lavoro: in risponde al se, find() risponde al primo dove, index() risponde al dove e si lamenta a gran voce quando non c’è corrispondenza, e count() risponde al quanti.

Maiuscole e minuscole, confronto e riempimento

Le maiuscole sono dove i confronti si guastano in silenzio: Python confronta per punto di codice Unicode, quindi maiuscole e lettere speciali contano tutte. Normalizza prima di confrontare — lower() o upper() per il testo ordinario, casefold() quando le coppie Unicode devono corrispondere — e riempi con ljust(), rjust(), center() o zfill() per la presentazione.

  • Confronto tra stringhe senza distinzione tra maiuscole e minuscole in Python — Normalizza entrambi i lati con lower() o upper(), poi presenta l’argomento Unicode a favore di casefold(), che rende equivalenti straße e STRASSE.
  • How to Pad String With Spaces in Python — Il banco completo: ljust(), rjust(), center() con caratteri di riempimento, più gli equivalenti con %, format() e f-string per un output allineato.
  • Confrontare stringhe in Python — Il riferimento degli operatori: == e != per l’uguaglianza, < e > per l’ordine lessicografico deciso dal primo punto di codice diverso.
  • How to Compare Two Strings Character by Character in Python — Accoppia i caratteri con zip() e conta le posizioni corrispondenti, trattando esplicitamente gli input None e le lunghezze disuguali.

Formattare e sostituire

Per il codice nuovo, formattare significa f-string: i valori siedono dentro il modello, dove puoi leggerli, e le specifiche di formato controllano larghezza e precisione. str.format() resta giusto quando il modello vive separatamente o viene riutilizzato, e la formattazione con % sopravvive nel codice vecchio che continuerai a incontrare. La sostituzione obbedisce all’immutabilità come tutto il resto: non modifichi mai una stringa, costruisci quella corretta.

  • Sostituisci il carattere in una stringa in Python — Conversione in lista e assegnazione per indice, affettamento intorno a una posizione nota, o replace() per ogni corrispondenza — ognuno restituisce una nuova stringa.
  • Differenza tra %se %d nella formattazione delle stringhe Python — %s accetta qualsiasi valore tramite la conversione con str(); %d esige un intero e tronca i decimali — la distinzione ereditata dietro la maggior parte delle sorprese.
  • The sprintf() Function in Python — Python non ha sprintf(); il lavoro ricade sull’operatore %, su format(), sulle f-string, o su un wrapper fatto a mano.
  • How to Replace Character in String at Index in Python — L’esempio Meatloaf in entrambi i modi — affettare e ricostruire, o mutare una copia in lista — esteso a più indici.

Mappa dei metodi delle stringhe

Python include 47 metodi di stringa integrati, e questa mappa trova rapidamente quello giusto. Leggila per verbi: la famiglia is* controlla, i metodi di maiuscole trasformano, split e join smontano e ricostruiscono, i metodi di ricerca localizzano. Dove una guida approfondisce un metodo, la terza colonna la collega; una cella vuota significa che la descrizione in una riga basta.

Metodo Cosa fa Approfondimento
capitalize() Mette in maiuscolo il primo carattere e il resto in minuscolo Approfondimento
casefold() Minuscole aggressive, pensate per il confronto senza distinzione di maiuscole Approfondimento
center() Centra la stringa in un campo della larghezza data
count() Conta le occorrenze che non si sovrappongono di una sottostringa Approfondimento
encode() Codifica la stringa in byte nella codifica scelta Approfondimento
endswith() Verifica se la stringa termina con un suffisso
expandtabs() Sostituisce i caratteri di tabulazione con spazi
find() Indice più basso di una sottostringa, o -1 quando è assente Approfondimento
format() Formatta i valori in segnaposto {}
format_map() Come format(), con i valori presi da una mappatura
index() Indice più basso di una sottostringa; solleva ValueError quando è assente Approfondimento
isalnum() Vero quando ogni carattere è una lettera o una cifra Approfondimento
isalpha() Vero quando ogni carattere è alfabetico
isascii() Vero quando ogni carattere è ASCII
isdecimal() Vero quando ogni carattere è una cifra decimale
isdigit() Vero quando ogni carattere è una cifra Approfondimento
isidentifier() Vero quando la stringa è un identificatore Python valido
islower() Vero quando tutte le lettere sono minuscole
isnumeric() Vero quando ogni carattere è numerico
isprintable() Vero quando ogni carattere è stampabile
isspace() Vero quando ogni carattere è uno spazio bianco
istitle() Vero quando la stringa è in formato titolo
isupper() Vero quando tutte le lettere sono maiuscole
join() Unisce un iterabile di stringhe usando questa stringa come separatore Approfondimento
ljust() Giustifica a sinistra in un campo della larghezza data
lower() Restituisce una copia in minuscolo Approfondimento
lstrip() Rimuove i caratteri iniziali (spazi bianchi per impostazione predefinita)
maketrans() Costruisce una tabella di traduzione per translate() Approfondimento
partition() Divide al primo separatore in una tupla di tre parti
removeprefix() Rimuove un prefisso quando è presente
removesuffix() Rimuove un suffisso quando è presente
replace() Sostituisce le occorrenze di una sottostringa con un’altra Approfondimento
rfind() Indice più alto di una sottostringa, o -1 quando è assente Approfondimento
rindex() Indice più alto di una sottostringa; solleva ValueError quando è assente
rjust() Giustifica a destra in un campo della larghezza data
rpartition() Divide all’ultimo separatore in una tupla di tre parti
rsplit() Divide su un separatore, contando da destra
rstrip() Rimuove i caratteri finali (spazi bianchi per impostazione predefinita)
split() Divide su un separatore in una lista Approfondimento
splitlines() Divide ai confini di riga in una lista
startswith() Verifica se la stringa inizia con un prefisso Approfondimento
strip() Rimuove i caratteri iniziali e finali Approfondimento
swapcase() Restituisce una copia con le maiuscole di ogni carattere invertite
title() Restituisce una copia in formato titolo, con ogni parola in maiuscolo
translate() Mappa i caratteri attraverso una tabella di traduzione Approfondimento
upper() Restituisce una copia in maiuscolo Approfondimento
zfill() Riempie con zeri iniziali fino alla larghezza data

Domande frequenti

Come converto una stringa in una lista in Python?

Decidi cosa deve essere ogni elemento, poi scegli lo strumento corrispondente. list(text) dà un elemento per carattere; text.split() dà le parole, e text.split(",") dà i campi separati da un delimitatore, conservando i campi vuoti. Per un testo che sembra già una lista Python, analizzalo con ast.literal_eval() e verifica che il risultato sia davvero una lista. Non usare mai eval() su input che non controlli. La procedura completa è in Come convertire una stringa in una lista in Python.

Come controllo se una stringa contiene una sottostringa o una parola?

Per un semplice test di sottostringa, usa l’operatore in: "word" in text restituisce un booleano ed è sensibile alle maiuscole. Quando ti serve anche la posizione, find() restituisce il primo indice o -1, mentre index() solleva invece ValueError. Nota che in corrisponde anche dentro parole più grandi — "is" in "This" è vero — quindi per una parola intera, tokenizza o usa un’espressione regolare con confini \b, come mostrato in Controlla se una stringa contiene Word in Python.

Come rimuovo la punteggiatura o i caratteri speciali da una stringa?

Definisci prima cosa deve sparire: solo la punteggiatura, o tutto ciò che non è una lettera o una cifra. Per la punteggiatura, filtra contro string.punctuation, sostituisci con l’espressione regolare [^\w\s], o cancella un intero insieme in una volta con una tabella str.translate() costruita da maketrans() — l’opzione più veloce. Per una pulizia più ampia, un filtro isalnum() conserva lettere e cifre Unicode. Elimina la punteggiatura da una stringa in Python passa in rassegna ogni variante.

Perché Python dice «not all arguments converted during string formatting»?

Questo TypeError viene dalla formattazione con %: il modello contiene meno segnaposto della tupla di valori che hai passato, così Python arriva alla fine del modello con argomenti avanzati — per esempio "Value: " % (1, 2). Dai a ogni valore esattamente un segnaposto, racchiudi un singolo valore in una tupla a un elemento, ed esegui l'escape di un segno di percentuale letterale come %%`. Una guida dedicata a questo errore lo disseziona caso per caso.

Esiste un toString() in Python?

No. Python non ha un metodo toString(); cercarlo è un’abitudine portata da Java. L’equivalente è l’integrato str(value), che restituisce una stringa leggibile per numeri, collezioni e la maggior parte degli oggetti. Usa join() per combinare molte stringhe, le f-string per costruire messaggi, e definisci __str__() nelle tue classi per controllare come si stampano. Nota che str() produce testo da visualizzare, non JSON o CSV. Vedi Equivalente di tostring() in Python.

Come sostituisco un carattere a un indice specifico?

Non puoi assegnare dentro una stringa: text[2] = "m" solleva TypeError, perché le stringhe sono immutabili. Costruisci invece la sostituzione: affetta intorno alla posizione, text[:2] + "m" + text[3:], oppure converti in lista, assegna all’indice e riunisci con "".join(...). Entrambi restituiscono una nuova stringa e lasciano intatta l’originale; convalida l’indice contro len(text) quando proviene dall’input dell’utente. Una guida dedicata mostra entrambi i metodi.

Tutte le guide sulle stringhe Python

Basi

Convertire

Pulire ed eliminare

Cercare, controllare e contare

Maiuscole e minuscole, confronto e riempimento

Formattare e sostituire

Altri articoli sulle stringhe