Comparación de strings en Python

Veamos cómo comparar strings en Python. 

Método 1: uso de operadores relacionales

Los operadores relacionales comparan los caracteres de las strings desde el índice cero hasta el final de la string. Luego devuelve un valor booleano de acuerdo con el operador utilizado.

Ejemplo:

«Geek» == «Geek» devolverá True ya que el Unicode de todos los caracteres es igual

En el caso de «Geek» y «geek» como el unicode de G es \u0047 y de g es \u0067
«Geek» < «geek» devolverá True y
«Geek» > «geek» devolverá False

Python3

print("Geek" == "Geek")
print("Geek" < "geek")
print("Geek" > "geek")
print("Geek" != "Geek")

Producción:

True
True
False
False

Método 2: Usar es y no es

== es lo mismo

Entendamos esto con un ejemplo:

Python3

str1 = "Geek"
str2 = "Geek"
str3 = str1
  
print("ID of str1 =", hex(id(str1)))
print("ID of str2 =", hex(id(str2)))
print("ID of str3 =", hex(id(str3)))
print(str1 is str1)
print(str1 is str2)
print(str1 is str3)
  
str1 += "s"
str4 = "Geeks"
  
print("\nID of changed str1 =", hex(id(str1)))
print("ID of str4 =", hex(id(str4)))
print(str1 is str4)

Producción:

ID of str1 = 0x7f6037051570
ID of str2 = 0x7f6037051570
ID of str3 = 0x7f6037051570
True
True
True

ID of changed str1 = 0x7f60356137d8
ID of str4 = 0x7f60356137a0
False

El ID de objeto de las strings puede variar en diferentes máquinas. Los ID de objeto de str1, str2 y str3 eran los mismos, por lo que el resultado es True en todos los casos. Después de cambiar la identificación del objeto de str1, el resultado de str1 y str2 será falso. Incluso después de crear str4 con el mismo contenido que en el nuevo str1, la respuesta será falsa ya que sus ID de objeto son diferentes.

Viceversa ocurrirá con no es.

Método 3: crear una función definida por el usuario .

Al usar operadores relacionales, solo podemos comparar las strings por sus códigos Unicode. Para comparar dos strings según otros parámetros, podemos crear funciones definidas por el usuario.

En el siguiente código, nuestra función definida por el usuario comparará las strings según la cantidad de dígitos.

Python3

# function to compare string
# based on the number of digits
def compare_strings(str1, str2):
    count1 = 0
    count2 = 0
      
    for i in range(len(str1)):
        if str1[i] >= "0" and str1[i] <= "9":
            count1 += 1
      
    for i in range(len(str2)):
        if str2[i] >= "0" and str2[i] <= "9":
            count2 += 1
      
    return count1 == count2
  
  
print(compare_strings("123", "12345"))
print(compare_strings("12345", "geeks"))
print(compare_strings("12geeks", "geeks12"))

Producción:

False
False
True

Publicación traducida automáticamente

Artículo escrito por Yash_R y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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