Cómo convertir una cadena en minúsculas en Python 2 y 3
Convertir cadena a minúsculas en Python 3
El tipo str
ya que Python 3.0 contiene por defecto caracteres Unicode
, lo que significa que cualquier cadena como "unicode example"
, 'unicode example 2'
se almacena como Unicode
.
Por lo tanto, puedes usar str.lower()
para convertir cualquier cadena a minúsculas en Python 3.
exampleString = "CaseString"
exampleString.lower()
#Out: 'casestring'
exampleString = "СтрокаСлучая"
exampleString.lower()
#Out: 'строкаслучая'
str.casefold()
conversión sin mayúsculas y minúsculas
str.lower()
convierte la cadena a minúsculas, pero no convierte las diferencias entre mayúsculas y minúsculas en la cadena.
Por ejemplo, ß
en alemán es igual a doble s
- ss
, y ß
ya está en minúsculas, por lo tanto, str.lower()
no lo convertirá.
Pero str.casefold()
convertirá ß
en ss
.
>>> 'Straße'.lower()
'straße'
>>> 'Straße'.casefold()
'strasse'
Convertir cadena a minúsculas en Python 2.7
El tipo str
en Python 2.7 no se almacena como Unicode
, y las cadenas Unicode
son instancias del tipo unicode
. Debemos distinguir si la cadena es una cadena ASCII
o unicode
cuando la convertimos a minúsculas.
Tipo ASCII
Lo mismo ocurre con el método utilizado en Python 3. str.lower()
convierte la cadena a minúsculas.
exampleString = "CaseStringExample"
exampleString.lower()
#Out: 'casestringexample'
Tipo unicode
Si los caracteres de la cadena son de tipo Unicode
, y la cadena no se representa explícitamente en el tipo Unicode
, el método str.lower()
no convierte la cadena a minúsculas en absoluto.
exampleString = "СтрокаСлучая"
print exampleString.lower()
#Out: СтрокаСлучая
exampleString.lower() == exampleString
#Out: True
Los objetos de Python a bytes no ASCII en una cadena sin codificación dada porque la codificación pretendida está implícita.
Usando literales Unicode
pero no 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: строкаслучая
Aquí se puede ver que el primer carácter de la cadena se convierte de \u0421
a \u0441
.
Convierte una str
a unicode
Si la cadena dada tiene la forma de str
, necesitamos primero convertirla a Unicode
antes de la conversión a minúsculas.
exampleString = "СтрокаСлучая"
print exampleString.decode('utf-8').lower()
#Out: строкаслучая
Conclusión
El método lower()
es el método para convertir string a minúsculas tanto en Python 2 como en 3, pero con una diferencia notable.
string en Python 3 es la cadena unicode
por defecto, pero string en Python 2 no lo es. Si la cadena no se representa explícitamente como de tipo unicode
, por ejemplo no poniendo u
antes de la cadena, la cadena del unicode no se convertirá en minúsculas en absoluto.
str.casefold
convierte las distinciones de mayúsculas y minúsculas a sus coincidencias sin mayúsculas, pero sólo está disponible en Python 3. Puedes instalar py2casefold en Python 2.