Lunghezza di una stringa
La funzione len
restituisce la lunghezza di una stringa in numero di caratteri:
line = "Hello World"
hw = len(line)
print(hw) # 11
text = """Hello
World"""
print(len(text)) # 11
11
Ripetizione e concatenazione di stringhe
Si chiama ripetizione.
Non credo che l’operatore di ripetizione sia usato molto spesso, ma in un caso potrebbe tornare molto utile: Quando vogliamo sottolineare una titolo, quindi aggiungere una riga di trattini di lunghezza pari titolo stesso.
name = 2 * 'Manu '
print(name) # Manu Manu
full_name = name + 'Rossi'
print(full_name) # Manu Manu Rossi
title = "Sottolineiamo il titolo"
print(title)
print('-' * len(title))
# We have some title
# ------------------
Manu Manu Rossi
Sottolineiamo il titolo
———————–
Trovare caratteri in una stringa
text = "La scienza dei dati"
a = text[0]
print(a) # L
b = text[6]
print(b) # e
⇒ L
e
String slice (invece di substr)
text = "Hello World"
b = text[1:4]
print(b) # ell
print(text[2:]) # llo World
print(text[:2]) # He
start = 1
end = 4
print(text[start:end]) # ell
llo World
He
ell
Le stringhe sono immutabili!!!
Si può essere tentati di usare l’operatore porzione [] alla sinistra di un’assegnazione, con l’intenzione di cambiare un carattere di una stringa:
Saluto = "Ciao!"
Saluto[0] = 'M' # ERRORE!
print Saluto
Invece di ottenere Miao! questo codice stampa il messaggio d’errore TypeError: object doesn't support item assignment.
Le stringhe sono infatti immutabili e ciò significa che non puoi cambiare una stringa esistente.
L’unica cosa che puoi eventualmente fare è creare una nuova stringa come variante di quella originale:
Saluto = "Ciao!"
NuovoSaluto = 'M' + Saluto[1:]
print (NuovoSaluto)
Come modificare una stringa?
Possiamo solo sostituire una parte della stringa…
Esempio 1
text = "abcd"
print(text) # abcd
text = text[:2] + 'Y' + text[3:]
print(text) # abYd
abYd
text = "abcd"
print(text) # abcd
text = text + "ef"
print(text) # abcdef
other = text
print(other) # abcdef
text = "xyz"
print(text) # xyz
print(other) # abcdef
abcdef
abcdef
xyz
abcdef