# Stringhe in Python: metodi split, replace, strip, join, slice e f-string

URL: https://skillaria.top/it/guides/python/stringhe-python

La stringa in Python (tipo str) è una sequenza immutabile di caratteri Unicode. Il metodo split() divide una stringa in una lista, join() riunisce una lista in una stringa, replace() sostituisce una sottostringa, strip() elimina gli spazi ai bordi; ogni metodo restituisce una nuova stringa. Per inserire valori conviene la f-string: f"{name}: {price:.2f}".

Le stringhe in Python compaiono in ogni programma: input dell'utente, nomi di file, righe di un CSV, risposte di un'API. Il tipo `str` conserva il testo in Unicode, quindi caratteri cirillici, accentati ed emoji funzionano senza configurazioni. I metodi più usati sono `split`, `replace`, `strip` e `join`, mentre per stampare i valori conviene la f-string. Vediamo tutto con esempi.

## Come è fatta una stringa in Python

Una stringa si scrive tra apici singoli o doppi, senza differenze: `'caffè'` e `"caffè"` sono identiche. Le triple virgolette creano una stringa su più righe, in cui gli a capo vengono conservati così come sono.

```
name = "Caffè"
note = """Prima riga
Seconda riga"""
print(len(name))  # 5 — lunghezza della stringa in caratteri
```

La proprietà fondamentale delle stringhe è l'immutabilità. Un metodo non modifica la stringa, ma ne restituisce una nuova. Quindi `s.replace("a", "b")` senza assegnazione non cambia nulla: bisogna scrivere `s = s.replace("a", "b")`. È l'errore più comune dei principianti.

### Caratteri speciali, a capo e stringhe grezze

Il ritorno a capo si indica con `\n`, la tabulazione con `\t`, la barra rovesciata con `\\`. Il prefisso `r` rende la stringa «grezza»: le barre rovesciate al suo interno non vengono interpretate. È comodo per i percorsi di Windows e per le espressioni regolari.

```
print("Totale:\n350 €")
path = r"C:\nuova\tabella.csv"   # \n e \t non diventano caratteri speciali
```

Un'espressione lunga si può spezzare su più righe di codice racchiudendola tra parentesi: le stringhe letterali adiacenti tra parentesi vengono unite automaticamente da Python.

## split: dividere una stringa in una lista

Il metodo `split()` divide la stringa in base a un separatore e restituisce una lista. Senza argomenti taglia su qualsiasi spazio bianco e ignora gli spazi ripetuti, il che è comodo per analizzare comandi.

```
"add  Caffè 250".split()       # ['add', 'Caffè', '250']
"2026-10-16".split("-")        # ['2026', '10', '16']
"a,b,,c".split(",")            # ['a', 'b', '', 'c']
"key=value=x".split("=", 1)    # ['key', 'value=x']
```

Notate la differenza: con un separatore esplicito i frammenti vuoti vengono conservati. Il secondo argomento `maxsplit` limita il numero di tagli, mentre `rsplit()` taglia da destra. Per dividere un testo in righe si usa `splitlines()`: riconosce sia `\n` sia `\r\n` e non lascia un elemento vuoto alla fine.

```
text = "caffè\ntaxi\n"
text.split("\n")     # ['caffè', 'taxi', '']
text.splitlines()    # ['caffè', 'taxi']
```

## join: unire una lista in una stringa

`join()` è l'operazione inversa. Si richiama sulla stringa separatrice e riceve come argomento una lista di stringhe:

```
items = ["caffè", "taxi", "pranzo"]
print(", ".join(items))   # caffè, taxi, pranzo
print("\n".join(items))   # ogni voce su una riga separata
```

Tutti gli elementi devono essere stringhe, altrimenti si ottiene `TypeError: sequence item 0: expected str instance, int found`. I numeri vanno convertiti prima: `", ".join(str(x) for x in amounts)`.

### Concatenazione e unione di stringhe

Due stringhe si sommano con `+` e si ripetono con `*`: `"-" * 20`. Ma unire centinaia di frammenti in un ciclo con `+=` è lento, perché ogni volta si crea una nuova stringa. Meglio raccogliere le parti in una lista e unirle con un unico `join()`. Una stringa non si può sommare direttamente a un numero: `"Totale: " + 5` genera `TypeError`, serve la funzione `str()` oppure una f-string.

## replace: sostituire una sottostringa

`replace(old, new)` sostituisce tutte le occorrenze della sottostringa. Il terzo argomento limita il numero di sostituzioni.

```
price = "1 250,50"
price = price.replace(" ", "").replace(",", ".")
print(float(price))                  # 1250.5

"a-b-c".replace("-", "+", 1)         # 'a+b-c'
```

Il metodo distingue maiuscole e minuscole e cerca una corrispondenza esatta. Per sostituzioni basate su uno schema (per esempio «tutte le cifre») serve il modulo `re` con la funzione `re.sub()`.

## strip, lstrip, rstrip: ripulire una stringa

`strip()` elimina spazi, tabulazioni e a capo da entrambi i lati. `lstrip()` pulisce solo a sinistra, `rstrip()` solo a destra. È la prima cosa da fare con l'input dell'utente e con le righe lette da un file.

```
raw = "  Caffè \n"
raw.strip()       # 'Caffè'
raw.rstrip()      # '  Caffè'
"xxCaffèxx".strip("x")   # 'Caffè'
```

L'argomento indica un insieme di caratteri, non una sottostringa: `"abcTestocba".strip("abc")` elimina da entrambi i bordi tutte le a, le b e le c, in qualsiasi ordine, e restituisce `'Testo'`. Per togliere esattamente un prefisso o un suffisso usate `removeprefix()` e `removesuffix()` (dalla versione 3.9).

## Altri metodi utili delle stringhe

| Metodo | Che cosa fa | Esempio → risultato |
| --- | --- | --- |

| `lower()`, `upper()` | maiuscole e minuscole | `"Caffè".lower()` → `'caffè'` |

| `startswith()`, `endswith()` | verifica dell'inizio e della fine | `"a.csv".endswith(".csv")` → `True` |

| `find()` | posizione della sottostringa oppure -1 | `"caffè".find("f")` → `2` |

| `count()` | numero di occorrenze | `"banana".count("a")` → `3` |

`isdigit()`

## FAQ

**Come si calcola la lunghezza di una stringa in Python?**

La funzione len(s) restituisce il numero di caratteri. Per cirillico ed emoji si contano i caratteri Unicode, non i byte; la dimensione in byte si ottiene con len(s.encode("utf-8")).

**Come trasformare un numero in stringa e viceversa?**

str(250) restituisce '250', mentre int("250") e float("2.5") fanno la conversione inversa. Se la stringa non è un numero, int() genera ValueError, quindi l'input va verificato.

**Perché replace non modifica la mia stringa?**

Le stringhe sono immutabili e replace restituisce una nuova stringa. Assegnate il risultato: s = s.replace("a", "b").

**Come verificare che una stringa sia vuota?**

Una stringa vuota è considerata falsa, quindi basta if not s:. Se la stringa può contenere solo spazi, controllate con if not s.strip():.

**In che cosa una t-string si differenzia da una f-string?**

La f-string restituisce subito una str pronta, mentre la t-string (Python 3.14+) è un oggetto Template con pezzi di testo e valori separati. Ciò permette di escapare in modo sicuro i dati per HTML e SQL.


---
Source: Skillaria.Top (https://skillaria.top)
