Le stringhe nel linguaggio Python

Autore:[Antonio Gallonetto]

La stringa è un tipo di dato immutabile, quindi la possiamo definire una lista immutabile. Nel senso che non possiamo prendere una stringa e cambiare un carattere al suo interno.

Assegnamento di una stringa ad una variabile

nomeVariabile="stringa" oppure nomeVariabile='stringa' quindi si possono usare indifferentemente le doppie virgolette oppure le virgolette singole.

Operazioni e metodi sulle stringhe

Metodi e operatori non cambiano la stringa

Tutti i metodi e gli operatori non cambiano la stringa ma creano una copia della stringa stessa modificata.

Concatenazione

L’operatore di concatenazione è il + e la sintassi è la seguente: nuovaStringa=stringa1+stringa2

Ripetizione

L’operatore di ripetizione è *, la sintassi è la seguente nuovaStringa=stringaA*numRipetizioni. Quindi la stringaA sarà ripetuta un certo numero di volte indicato dopo il *.

Slicing

Per slicing si intende l’estrazione di una sottostringa.

Sintassi dello slicing

nuovaStringa=stringa[inizioSottostringa:fineSottostringa] la fineSottostringa non è contenuta.

Esempio

my_string = input("Inserisci il tuo codice fiscale: ")
if not(len(my_string)==16):
    print("Questo codice fiscale è troppo lungo o troppo corto")
else:
    consonanti=my_string[0:6]
    print(f"{consonanti} queste sono le consonanti del cognome e nome")

Casi particolari di slicing

Lunghezza di una stringa len()

Sintassi: numCaratteri=len(stringa) ovviamente questo metodo ritorna un numero intero pari al numero di caratteri contenuto nella stringa.

Confronto tra stringhe

Tipi di confronto:

Esempio

if ("azd">"zz") :
    print("azd>zz")
else :
    print("azd<zz")
## ris azd<zz

if ("z">"zd") :
    print("z>zd")
else :
    print("z<zd")
## ris z<zd

Verifica se una sottostringa è contenuta nella stringa

L’operatore è in

Esempio

stringa="Not Quit"
while stringa.lower() !="quit":
    stringa = input("Inserisci una stringa: ")
    sottoStringa=input("Inserisci una seconda stringa: ")
    if sottoStringa in stringa:
        print(f"La sottostringa {sottoStringa} è contenuta in {stringa}")

Formattazione delle stringhe

I principali metodi di formattazione delle stringhe sono due:

Esempio

stringa = input("Inserisci una stringa: ")
if stringa.isdigit():
    print (f"La stringa inserita {stringa} è un numero")
else:
    nuovaStringa="La stringa inserita {} non è un numero".format(stringa)
    print(nuovaStringa)

Esempio di formattazione con più variabili indicate per posizione

stringa1=input("Inserisci la stringa1: ")
stringa2=input("Inserisci la stringa2: ")
stringa3=input("Inserisci la stringa3: ")
nuovaStringa="stringa3={2} -- stringa2={1} -- stringa1={0}"
nuovaStringa=nuovaStringa.format(stringa1,stringa2,stringa3)
print(nuovaStringa)
## ris stringa3=s3 -- stringa2=s2 -- stringa1=s1
nuovaStringa="stringa3={} -- stringa2={} -- stringa1={}"
nuovaStringa=nuovaStringa.format(stringa3,stringa2,stringa1)
print(nuovaStringa)
## ris stringa3=s3 -- stringa2=s2 -- stringa1=s1

capitalize()

Questo metodo converte il primo carattere di stringa in maiuscolo e ritorna una nuova stringa.

##Sintassi nuovaStringa=stringaDiPartenza.capitalize()

Esempio

stringa="testo di prova"
nuovaStringa=stringa.capitalize()
print(nuovaStringa) ## ris Testo di prova

center(lunghezzaStringa,carattereDiRiempimento)

Riempie una stringa centrandola e riempendo l’inizio e la fine con il carattereDiRiempimento se non indicato è lo spazio. Il carattereDiRiempimento può essere fatto al massimo da un singolo carattere.

Sintassi

nuovaStringa=stringa.center(lunghezzaStringa, carattereDiRiempimento)

Esempio

stringa="abcdefghilmnopqrstuvz"
nuovaStringa=stringa.center(35,".")
print(nuovaStringa) ##ris .......abcdefghilmnopqrstuvz.......
print(len(nuovaStringa)) ## ris 35

count(sottostringa)

Conta quante volte una sottostringa è ripetuta

Sintassi

numeroRipetizioni=stringa.count(sottostringa) il numero di ripetizioni di ritorno è un intero. Nel caso che non sia presente la sottostringa ritorna 0.

Esempio

stringa="pinco pallino"
sottostringa="l"
ripetizioni=stringa.count(sottostringa)
print(ripetizioni)
## ris 2

encode() e decode()

Una stringa può essere codificata e decodificata attraverso questi due comandi. I codec disponibili sono moltissimi, alcuni esempi utf-8, utf-16, e quelli su base 64 sono usatissimi.

Sintassi

nuovaStringa=stringaDaCodificare(encoding="codec",errors="gestioneErrore") Tipi di errore gestiti:

Esempio

Notare i punti di domanda nel risultato

stringa="abcdefghilmnopqrstuvz,.@#+*è'ì^ù§!£$%&/()="
nuovaStringa=stringa.encode(encoding='cp1250',errors='replace')
print(nuovaStringa) ##ris b"abcdefghilmnopqrstuvz,.@#+*?'?^?\xa7!?$%&/()="
nuovaStringa=stringa.encode(encoding='utf_16',errors='replace')
print(nuovaStringa)

find(sottostringa)

find ricerca la posizione di una sottostringa all’interno di una stringa, se non presente ritorna -1.

Sintassi

posizioneSottostringa=stringa.find(sottoStringa) Il valore di posizioneSottostringa è compreso tra 0 e la lunghezza della stringa -1.

Esempio

stringa="Tom e Jerry"
sottoStringa="jerry"
lowStringa=stringa.lower()
posJerry=lowStringa.find(sottoStringa)
print(posJerry)
## ris 6

index(sottoStringa)

Ritorna la posizione della sottoStringa all’interno di una stringa, ovviamente si parte sempre da zero.

Sintassi

posizione=nomeStringa.index(sottoStringa)

Esempio

urlSitoInternet="https://www.velociraptus.com/"
pos=urlSitoInternet.index(":")
print(pos) ##ris 5

join(sottoStringa)

Questo metodo inserisce la stringa tra ogni elemento della sottoStringa e ritorna una nuova stringa.

Sintassi

nuovaStringa=stringaDiPartenza.join(stringa1)

Esempio

my_string="."
sottoStringa="1234567890"
nuovaStringa=my_string.join(sottoStringa)
print(nuovaStringa)
##ris 1.2.3.4.5.6.7.8.9.0

Un uso speciale di join, convertire una lista di caratteri in una stringa

lista=["a","b","c"]
stringaVuota=""
nuovaStringa=stringaVuota.join(lista)
print(nuovaStringa)

list(stringa)

Metodo che converte una stringa in una lista

Sintassi

nomeLista=list(stringa)

Esempio

stringa="www.velociraptus.com"
listaCaratteri=list(stringa)
print(listaCaratteri)
##ris ['w', 'w', 'w', '.', 'v', 'e', 'l', 'o', 'c', 'i', 'r', 'a', 'p', 't', 'u', 's', '.', 'c', 'o', 'm']

lower() e upper()

lower() converte e restituisce una stringa in minuscolo e upper() in maiuscolo

Sintassi

nuovaStringa=stringa.lower() e nuovaSTringa=stringa.upper()

replace(stringaDaRimpiazzare, stringaSostitutiva)

Sostituisce una sottostringa con un altra e restituisce la nuova stringa

Sintassi

nuovaStringa=stringa.replace(stringaDaRimpiazzare, stringaSostitutiva)

startswith(stringa) endswith(stringa)

Controlla se la stringa inizia con una certa sottostringa oppure finisce con una determinata serie di caratteri. Il valore di ritorno è un booleano

Sintassi

boolDiRitorno=stringa.startswidth(sottostringa) oppure boolDiRitorno=stringa.endsswidth(sottostringa)

Esempio

my_string = input("Inserisci l'URL da controllare: ")
test_url=my_string.lower()
if len(test_url)>0 and test_url.startswith("https://www."):
    print(f"Posso testare la stringa -- {my_string} --")
else:
    print("Non posso testare l'URL")

strip(sottoStringa), lstrip(sottoStringa), rstrip(sottoStringa)

Sintassi

nuovaStringa=nomeStringa.strip(sotyoStringaDaRImuovere) oppure nuovaStringa=nomeStringa.lstrip(sotyoStringaDaRImuovere) oppure nuovaStringa=nomeStringa.rstrip(sotyoStringaDaRImuovere)

Esempio

urlSitoInternet="      https://www.velociraptus.com/  "
nuovaUrl=urlSitoInternet.strip(" ")
nuovaUrl=nuovaUrl.lstrip("https://")
nuovaUrl=nuovaUrl.rstrip("/")
print(nuovaUrl) ##ris   www.velociraptus.com

Verifiche sui tipi di carattere contenuti in una stringa

isalpha() oppure isalnum()

Controlla che i caratteri contenuti siano tutti alfanumerici

Sintassi

valoreBooleano=stringa.isalpha()

Esempio

stringa="abcdefghilmnopqrstuvz"
if stringa.isalpha():
    print(f"{stringa} sono tutti caratteri alfanumerici")

isdecimal()

Controlla se la stringa contiene cifre decimali

Sintassi

valoreRestituitoBooleano=nomeStringa.isdecimal()

Esempio

stringa="11\u00b2"
if stringa.isdecimal():
    print("stringa composta da valori decimali")
else:
    print("stringa non composta da valori decimali")
if stringa.isdigit():
    print("stringa composta da numeri e simboli matematici")
else:
    print("stringa non composta da numeri e simboli matematici")

isdigit()

Controlla se il contenuto della stringa è un numero e può contenere simboli matematici come pedici e apici esempio elevazione a potenza.

Sintassi

valoreBooleano=stringa.isdigit()

isnumeric()

Controlla se la stringa contiene numeri, nel caso nel quale contenga lettere oppure punti virgole restituisce false.

Sintassi

valoreBooleano=stringa.isnumeric()

Esempio

numeroFrazionario="10.35"
if numeroFrazionario.isnumeric():
    print(f"{numeroFrazionario} è un numero per isnumeric ")
else:
    print(f"{numeroFrazionario} non è un numero per isnumeric")

islower()

Controlla se i caratteri all’interno sono tutti minuscoli

Sintassi

valoreBooleano=stringa.islower()

isspace()

Controlla se la stringa è composta soltanto da spazi

Sintassi

valoreBooleano=nomeStringa.isspace()

istitle()

Controlla se la stringa inizia con una lettera maiuscola

Esempio

stringa="Star Wars"
if not(stringa.isspace()):
    if stringa.istitle:
        print(f"{stringa} è un titolo")
    else:
        print(f"{stringa} non è un titolo")
else:
    print("La stringa è composta soltanto da caratteri")
## ris Star Wars è un titolo

isupper()

Controlla se i caratteri all’interno sono tutti maiuscoli.

Sintassi

valoreBooleano=stringa.isupper()

Esempio

stringa = input("Inserisci una stringa: ")
if stringa.isdigit():
    print (f"La stringa inserita {stringa} è un numero")
else:
    print(f"La stringa inserita {stringa} non è un numero")
    if stringa.islower():
        print(f"La stringa {stringa} è formata da tutti caratteri minuscoli")

max(stringa) e min(stringa)

Questi due metodi estraggono il carattere ascii più piccolo e il più grande

Sintassi

carattere=min(stringa) e carattere=max(stringa)

Esempio

stringa="abcdefghilmnopqrstuvz"
print(min(stringa)) ##ris a
print(max(stringa)) ##ris z

Argomenti correlati: