Come convertire una stringa in minuscola in Python 2 e 3

  1. Convertire la stringa in minuscola in Python 3
  2. Convertire la stringa in minuscolo in Python 2.7
  3. Conclusione

Convertire la stringa in minuscola in Python 3

Il tipo str poiché Python 3.0 contiene di default i caratteri Unicode, cioè qualsiasi stringa come "unicode example", 'unicode example 2' viene memorizzato come Unicode.

Pertanto, si potrebbe usare str.lower() per convertire qualsiasi stringa in minuscolo in Python 3.

exampleString = "CaseString"
exampleString.lower()
#Out: 'casestring'

exampleString = "СтрокаСлучая"
exampleString.lower()
#Out: 'строкаслучая'

str.casefold() conversione caseless

str.lower() converte la stringa in minuscolo, ma non converte le distinzioni di maiuscolo nella stringa.

Per esempio, ß in tedesco è uguale a doppio s - ss, e ß è già di per sé minuscola, quindi, str.lower() non la converte.

Ma str.casefold() convertirà ß in ss.

>>> 'Straße'.lower()
'straße'
>>> 'Straße'.casefold()
'strasse'

Convertire la stringa in minuscolo in Python 2.7

Il tipo str in Python 2.7 non è memorizzato come Unicode, e le stringhe Unicode sono istanze del tipo unicode. Dobbiamo distinguere se la stringa è una stringa ASCII o unicode quando convertiamo la stringa in minuscolo.

Tipo ASCII

Lo stesso vale per il metodo usato in Python 3. str.lower() converte la stringa in minuscolo.

exampleString = "CaseStringExample"
exampleString.lower()
#Out: 'casestringexample'

Tipo unicode

Se i caratteri nella stringa sono di tipo unicode, e la stringa non è esplicitamente rappresentata di tipo unicode, il metodo str.lower() non converte affatto la stringa in minuscolo.

exampleString = "СтрокаСлучая"
print exampleString.lower()
#Out: СтрокаСлучая

exampleString.lower() == exampleString
#Out: True

Gli oggetti Python in byte non ASCII in una stringa senza codifica data perché la codifica prevista è implicita.

Utilizzando i termini Unicode letterali ma non str

exampleUnicodeString = u"СтрокаСлучая"
exampleUnicode
#u'\u0421\u0442\u0440\u043e\u043a\u0430\u0421\u043b\u0443\u0447\u0430\u044f'
exampleUnicodeString.lower()
#u'\u0441\u0442\u0440\u043e\u043a\u0430\u0441\u043b\u0443\u0447\u0430\u044f'

print exampleUnicodeString.lower()
#Out: строкаслучая

Si può vedere qui che il primo carattere della stringa viene convertito da u0421 a u0441.

Convertire una stringa in ununicodo

Se la stringa data è in forma di str, dobbiamo prima convertirla in unicode prima della conversione minuscola.

exampleString = "СтрокаСлучая"
print exampleString.decode('utf-8').lower()
#Out: строкаслучая

Conclusione

Il metodo lower() è il metodo per convertire la stringa in minuscolo sia in Python 2 che in 3, ma con una notevole differenza.

stringa in Python 3 è la stringa unicode di default, ma la stringa in Python 2 non lo è. Se la stringa non è rappresentata esplicitamente per essere di tipo unicode, per esempio non mettendo u prima della stringa, la stringa unicode non sarà affatto convertita in minuscolo.

Lo str.casefold converte le distinzioni di maiuscole e minuscole nelle loro corrispondenze senza maiuscole, ma è disponibile solo in Python 3. Si può installare py2casefold in Python 2.

Articolo correlato - Python String

  • Crea una stringa multilinea in Python
  • Come convertire una stringa in Float o Int in Python