Cómo convertir una cadena en minúsculas en Python 2 y 3

  1. Convertir cadena a minúsculas en Python 3
  2. Convertir cadena a minúsculas en Python 2.7
  3. Conclusión

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.

Artículo relacionado - Python String

  • Cómo eliminar los espacios en blanco de una cadena en Python
  • Cómo leer un archivo línea por línea a una lista en Python
  • comments powered by Disqus