Convertir cadena a minúsculas en Python

Introducción

Convertir texto a mayúsculas y minúsculas es un buen punto de partida de cualquier tipo para el procesamiento de textos.

En este artículo, le mostraremos cómo convertir texto a minúsculas utilizando uno de los métodos integrados de Python que se utilizan para manipular cadenas: str.lower().

Desde una perspectiva de alto nivel, el proceso se lleva a cabo mediante:

exampleString = "[email protected]$"
lowercaseString = exampleString.lower()
print(lowercaseString) 

Sin embargo, y especialmente si eres nuevo en Python, sigue leyendo. Discutiremos un enfoque alternativo para convertir cadenas a minúsculas, para que tenga una descripción completa del tema. Después de leer el artículo, podrá convertir cualquier cadena a minúsculas, sepa cuándo usar simplemente el str.lower() método, y cuándo elegir el enfoque alternativo en su lugar.

Cómo convertir una cadena a minúsculas en Python

Convertir cadenas a minúsculas es bastante simple de hacer en Python. str.lower() es el método integrado diseñado específicamente para este propósito. Se define como un método de String type que se construye en el espacio de nombres de Python.

Notar: Cada tipo incorporado de Python tiene un conjunto de métodos diseñados para realizar operaciones en ese tipo específico. por ejemplo, el String type tiene métodos predefinidos para eliminar los espacios en blanco iniciales y finales, encontrar y reemplazar subcadenas, dividir cadenas en matrices y más. Uno de estos métodos es str.lower().
Cada método definido para el String el tipo tiene la str prefijo por nombre en la documentación. Esto sugiere que todos se llaman en instancias de cadena.

los str.lower() El método devuelve una copia en minúsculas de la cadena a la que se llama. Esto puede ser útil cuando desea guardar la cadena original para su uso posterior. Ahora veamos cómo convertir una cadena a minúsculas en Python.

Supongamos que tiene una cadena que desea convertir:

exampleString = "[email protected]$"

Como puede ver, esta cadena contiene letras mayúsculas y minúsculas, así como caracteres especiales. Solo las letras se pueden convertir a minúsculas, por lo que esperaría que la versión en minúsculas de esta cadena sea "[email protected]$":

lowercaseString = exampleString.lower()
print(lowercaseString) 

Después de llamar al str.lower() método en el exampleStringsu copia en minúsculas se almacena como un nuevo objeto, referenciado por lowercaseString. Solo para asegurarse de que str.lower() método produce la salida correcta, comparemos el lowercaseString a la esperada versión en minúsculas del exampleString:

if(lowercaseString == "[email protected]$"):
	print("Lowercase string EQUAL to expected string!")
else:
    print("Lowercase string NOT EQUAL to expected string!")

Este fragmento de código generará:

"Lowercase string EQUAL to expected string!"

¡Impresionante!

Notar: El método opuesto str.lower() el metodo es el str.upper(). Se utiliza de la misma manera que el str.lower(). Además, puede verificar si una cadena está en minúsculas o en mayúsculas usando el comando str.islower() Donde str.isupper().

Por que usar str.casefold() En vez de str.inferior()

El método anterior es adecuado para la mayoría de los casos de uso. Hace lo que se supone que debe hacer siguiendo algunas reglas simples. A partir de Python 3.0, las cadenas se representan como matrices de caracteres Unicode, lo que facilita la str.lower() para reemplazar cada código de letra mayúscula con el correspondiente código de letra minúscula.

Este principio funciona bien en casi todos los casos de uso, pero hay algunos casos en los que debería considerar usar el str.casefold() método en su lugar.

Por ejemplo, al implementar partido sin caja de dos cuerdas, la str.casefold() es el camino a seguir. Dado que Python usa Unicode para representar cadenas, todas las reglas definidas en el estándar Unicode también se aplican a Python. Dentro sección 3.13 la norma establece lo siguiente:

Una cuerda X es una coincidencia que no distingue entre mayúsculas y minúsculas para una cadena Y si y solo si:

toCasefold(X) = toCasefold(Y)

Porque el str.casefold() es la implementación de Python del método Unicode toCasefold()debe usarlo al implementar la coincidencia sin mayúsculas y minúsculas.

Notar: Los dos X.casefold() y toCasefold(X) los métodos asignan cada carácter en la cadena X en su correspondiente expediente, tal y como se define en el CaseFolding.txt carpeta en el Base de datos de caracteres Unicode.

Para ilustrar la diferencia entre str.lower() y str.casefold(), veamos el ejemplo de la letra alemana "ß", una letra minúscula que equivale a "ss". Esto significa que se espera que las siguientes cadenas coincidan exactamente sin mayúsculas y minúsculas:

A = "ßaBcß"
B = "ssAbCss"

Consulte nuestra guía útil y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprender ¡esta!

Pero si tratas de compararlos usando el str.lower() método, no obtendrá el resultado esperado:

Al = A.lower()
Bl = B.lower()

print(Al == Bl)

Esta comparación producirá la False valor, lo que significa que A.lower() no es igual a B.lower(). Esto se debe a que la "ß" ya es una letra minúscula, por lo que la str.lower() el método no lo cambiará. Entonces, Al y Bl tener los siguientes valores:

Al = "ßabcß"
Bl = "ssabcss"

Evidentemente, Al no es igual a Blpor lo tanto, la comparación anterior debería producir la False evaluar.

Para corregir este comportamiento inesperado, debe utilizar el str.casefold() método. Es más agresivo que str.lower() ya que esto eliminará absolutamente todas las diferencias entre mayúsculas y minúsculas en una cadena. Por lo tanto, la "ß" será reemplazada por "ss" y puede hacer coincidir las cadenas sin mayúsculas y minúsculas. A y B:

Ac = A.casefold()


Bc = B.casefold()

Ahora, si comparas cadenas dobladas en mayúsculas y minúsculas A y Bobtendrá el resultado esperado, el mismo que se define en el Estándar Unicode:

print(Ac == Bc)

Alerta: El tipo de coincidencia sin mayúsculas y minúsculas especificado se llama coincidencia sin mayúsculas y minúsculas predeterminadaque es el tipo más básico de coincidencia sin mayúsculas y minúsculas definido por el estándar Unicode.
Hay otros tres tipos de coincidencias sin mayúsculas y minúsculas definidos en el estándar Unicode: Coincidencia canónica, de compatibilidad y de identificadores sin mayúsculas y minúsculas. Cada uno de ellos implica la adición de uno o más pasos para mejorar la precisión de coincidencia en casos de uso más específicos. Estos pasos adicionales suelen ser para normalizar las cadenas al hacer coincidir (lo que no se hace cuando se compara sin mayúsculas y minúsculas de forma predeterminada).

Problemas con str.casefold()

Aunque str.casefold() es un método integrado de Python para implementar toCasefold() método del estándar Unicode, definitivamente no debe usarlo sin cuidado. Hay casos extremos en los que esto no producirá el resultado deseado.

Por ejemplo, el estándar Unicode define la versión en minúsculas (minúsculas) de la letra mayúscula I me gusta i, que corresponde a su uso en la mayoría de los idiomas. Pero este mapeo no puede funcionar en turco. El idioma turco tiene dos variantes de la letra I con sus propias contrapartes en minúsculas:

  • yo capitalizo - I (similar a la letra mayúscula habitual I)
    • con su variante en minúsculas - ı
  • i mayúscula punteada - İ
    • con su variante en minúsculas - i (similar a la letra minúscula habitual I)

Por lo tanto, la codificación Unicode estándar no funcionaría en el idioma turco. Por esta razón, el estándar Unicode ha definido dos asignaciones de casos diferentes: para idiomas turcos y no turcos. La variante turca tiene en cuenta los matices mencionados del idioma turco y la variante no turca asigna letras mayúsculas I a su pequeña contraparte habitual i.

Por otro lado, el str.casefold() solo usa el mapeo de bin predeterminado (no turco), por lo que no puede realizar una coincidencia sin mayúsculas y minúsculas en turco para algunas palabras.

Notar: Por lo tanto, decimos que el str.casefold() ¡no pases el examen de turco!

Por ejemplo, se espera que las siguientes cadenas no distingan entre mayúsculas y minúsculas en turco:

str1 = "Iabcİ"
str2 = "ıabci"

Pero, en la práctica, la comparación habitual dará la False evaluar:

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


Tenga en cuenta que el str.casefold() convertir ambos I y İ en el mismo carácter minúsculo - i, que se ajusta a la asignación de carpetas estándar (no turca) del estándar Unicode. Esto es lo que causó el resultado indeseable de este partido sin caso.

Este ejemplo ilustra el caso donde str.casefold() produce el resultado incorrecto de una coincidencia sin mayúsculas y minúsculas en un idioma específico. Por lo tanto, debe prestar atención a los detalles del idioma con el que está trabajando.

Conclusión

Después de leer esta guía, comprenderá cuál es la forma más genérica de convertir una cadena a minúsculas en Python, así como cuál es el enfoque alternativo.

Cubrimos brevemente el str.lower() en Python, luego se sumergió en los detalles del str.casefold() método.

Hemos cubierto sus casos de uso básicos, los comparamos con str.lower() explicó los conceptos y estándares básicos que rodean la implementación de Python del algoritmo de plegado de casos.

Al final, hemos discutido algunos casos de uso problemáticos para que pueda estar al tanto de algunos de los resultados no deseados que el str.casefold() método puede producir.

Si quieres conocer otros artículos parecidos a Convertir cadena a minúsculas en Python puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas