Cómo comparar cadenas en Python

Comparar cadenas en Python es una tarea de programación habitual en el día a día, que se utiliza para interpretar entradas de usuario, comprobar enormes conjuntos de datos o trabajar con protocolos basados en texto. Te mostraremos varias formas de comparar cadenas en Python y te daremos ejemplos muy fáciles de entender.

Operadores y funciones para comparar cadenas en Python

Python proporciona a los usuarios todo un conjunto de operadores de comparación de cadenas y funciones preconstruidas que hacen que comparar cadenas sea fácil y rápido. Primero veremos los operadores de comparación y luego los métodos de comparación. A continuación, veremos dos ejemplos de código para mostrarte cómo funcionan los operadores y los métodos.

Operadores comparativos

La forma más sencilla de comparar dos cadenas en Python es con los operadores de Python. Al igual que con los números enteros o de coma flotante, se pueden utilizar operadores comparativos para comprobar que las cadenas son iguales. Sin embargo, los operadores en este contexto no funcionan como con los números, ya que hay varias propiedades de las cadenas que se pueden comparar. La tabla siguiente ofrece una visión general de los operadores de comparación y sus funciones.

Operador Descripción Ejemplo Valor de retorno
== Las cadenas son iguales "Hello" == "hello" false
!= Las cadenas no son iguales "Hello" != "hello" true
< orden lexicográfico menor "Australia" < "Zimbabwe" true
> orden lexicográfico mayor "Australia" > "Zimbabwe" false
<= orden lexicográfico menor o igual que "Germany" <= "United States" false
>= orden lexicográfico mayor o igual que "Germany" <= "Germany" true

Aquí, “orden lexicográfico” es el término técnico para “orden alfabético” y significa lo mismo. Las palabras con un orden lexicográfico menor aparecen antes en el alfabeto que las palabras con un orden lexicográfico mayor. Así, la cadena “abcd” tiene un orden lexicográfico inferior que la cadena “xyz”.

Los espacios vacíos en las cadenas tienen el orden lexicográfico más bajo de todos los caracteres. Por tanto, si tomas los primeros caracteres de una cadena como subcadena de Python, esa subcadena siempre tendrá un orden inferior al de la cadena original. Por ejemplo, la cadena “Alex” tiene un orden lexicográfico inferior que la cadena “Alexander”.

Recuerda que el orden lexicográfico de Python no siempre coincide con el orden alfabético habitual. Por ejemplo, Python evalúa la expresión “a < b” como “true”, pero la expresión “a < B” como “false”. Esto se debe a que, tanto en el estándar ASCII como en el Unicode, las letras mayúsculas siempre se codifican con valores más bajos que las minúsculas.

Nota

Además de comparar cadenas, dar formato a los textos es una parte importante de la programación. En nuestro artículo sobre los métodos de formato de las cadenas en Python, examinamos los métodos y operadores de formato más importantes.

Métodos comparativos

Además de los operadores de comparación, existen algunos métodos incorporados que te permiten comparar cadenas según otros criterios:

Método Descripción Ejemplo Valor de retorno
.startswith() Devuelve “true” cuando las primeras letras de una cadena coinciden con las de otra cadena "Benjamin".startswith("Ben") true
.endswith() Devuelve “true” cuando las últimas letras de una cadena coinciden con otra cadena "Benjamin".endswith("jasmin") false
.find() Devuelve el índice de la primera aparición de una subcadena; si la subcadena no aparece, devuelve -1. "Christmas".find("mas") 4

Comparar cadenas en Python: ejemplos de código

Para mostrarte cómo funcionan los operadores y métodos anteriores, te presentaremos dos ejemplos. Uno de ellos es simple, mientras que el otro es un poco más complejo.

Comprobar si la lista está ordenada alfabéticamente

En este ejemplo, el programa crea una lista a partir de un texto de entrada. A continuación, utiliza operadores comparativos para comprobar si la lista está ordenada alfabéticamente.

input_list = []
while(True):
    temp = input('Please enter your word. If you don’t want to type any more words, enter \'.\'')
    if temp == '.':
        break
    input_list.append(temp)
print('Your entry: ', input_list)

i = 0
alph = 1
while(i < len(input_list) - 1):
    if(input_liste[i] > input_list[i + 1]):
        print('This list is not sorted alphabetically!')
        alph = 0
        break
    i = i + 1

if(alph == 1):
    print('This list is sorted alphabetically.')
Python

Base de datos de personas con función de búsqueda

En este ejemplo más complejo, se pide al usuario que introduzca los nombres y apellidos de las personas. Cada uno de ellos se inserta en una lista, que a su vez se integra en una lista mayor. Así se crea una lista anidada en la que cada sublista contiene el nombre y los apellidos de una persona. A continuación, esta lista grande se ordena alfabéticamente por apellidos. Ahora, el usuario puede volver a introducir texto para buscar personas en la base de datos. Esto se hace utilizando el método de comparación ‘.find()’.


people = []
while(True):
    temp = input('Please enter the person’s last name. If you don’t want to enter people anymore, please enter \'.\')
    if temp == '.':
        break
    person = []
    person.append(temp)
    temp = input('Please enter the person’s first name.')
    person.append(temp)
    people.append(person)
print(Your entry: ', people)


# Sort
people.sort()
print(Sorted: ', people)


# Search function
while(True):
    search = input('Please enter string to browse database. If you don’t want to search for people anymore, please enter \'.\'')
    if search == '.':
        break
    for i in people:
        if(i[0].find(search) != -1 or i[1].find(search) != -1):
            print('Match found: ', i[0], ', ', i[1])
Python
Consejo

¿Quieres poner en marcha tu aplicación web rápidamente y sin apenas esfuerzo? No hay problema. Deploy Now de IONOS es la solución perfecta para ti.