lettura facile

Il metodo casefold() di Python

Il metodo casefold() in Python converte tutti i caratteri della stringa in minuscolo, in modo tale che puoi confrontarla con un'altra stringa senza considerare le differenze tra le lettere maiuscole e minuscole.

stringa.casefold()

Si applica alla stringa di testo che vuoi convertire.

Questo metodo restituisce la stringa con i caratteri in minuscolo, senza modificare la stringa originale.

E' estremamente utile nella programmazione, soprattutto quando si tratta di confrontare due stringhe in modo case insensitive, ignorando le differenze tra maiuscole e minuscole. Ad esempio, nel caso delle autenticazioni di un utente, delle ricerche di testo, e dell'ordinamento alfanumerico di due o più stringhe alfanumeriche.

Ecco un esempio pratico di confronto case insensitive.

Definisci queste due stringhe di testo.

str1 = "Python"
str2 = "python"

Entrambe le stringhe contengono la scritta "python" ma la prima stringa ha la "P" maiuscola mentre la seconda ha la "p" minuscola.

Se confronti le due stringhe, Python ti restituisce False perché sono stringhe diverse.

print(str1 == str2)

False

In alcuni casi, però, queste differenze non sono importanti e andrebbero ignorate. Ad esempio, quando effettui una ricerca in un database o in un search engine.

Per non considerare la differenza tra le lettere minuscole e maiuscole, puoi applicare il metodo casefold() in entrambe le stringhe.

print(str1.casefold() == str2.casefold())

Il metodo casefold() converte tutte le lettere in minuscolo, quindi il confronto dà esito positivo. Le due stringhe sono uguali.

True

Oltre che per i confronti e le ricerche, questo metodo è molto utile anche quando si ordinano le stringhe.

La differenza tra lower(), upper() e casefold()

Puoi ottenere lo stesso risultato anche con il metodo lower() o il metodo upper().

str1 = "Python"
str2 = "python"
print(str1.lower() == str2.lower())

Il risultato del confronto è sempre True

True

Tuttavia, il metodo casefold() è preferibile perché:

  1. E' progettato appositamente per rimuovere tutte le differenze case sensitive in una stringa. Quindi, è più adatto per i confronti dove è necessaria una maggiore sensibilità.
  2. Il metodo casefold() supporta i caratteri Unicode e può lavorare con stringhe in diverse lingue e alfabeti.

Ad esempio, definisci queste due stringhe con la parola tedesca "Straße".

s1="Straße"
s2="Strasse"

La lettera ß esiste solo in minuscolo nell'alfabeto tedesco e in maiuscolo è sostituita con una doppia SS.

Se confronti queste stringhe con il metodo lower(), il risultato è False perché s1 diventa "straße" mentre s2 diventa "strasse"

print(s1.lower() == s2.lower())

False

Se invece fai il confronto usando il metodo caseFold() il risultato è True, perché sia s1 che s2 diventano "strasse".

 

print(s1.casefold()==s2.casefold())

True

Per questa ragione è preferibile usare sempre il metodo casefold() nei confronti case insensitive tra le stringhe.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin