Python: compruebe si la variable es una cadena

En este tutorial, veremos cómo verificar si una variable es una cadena en Python, usando las funciones type() e isinstance(), y el operador is.

Introducción

Python es un lenguaje tipado dinámicamente, y los tipos de datos variables se infieren sin la intervención explícita del desarrollador.

Si tuviéramos un código que requiere una cadena para funcionar correctamente pero carecía de sugerencias de tipo, que son opcionales, ¿cómo podemos evitar errores si la variable utilizada no es una cadena?

En este tutorial, veremos cómo comprobar si una variable es una cadena en Python, utilizando las funciones type() y isinstance(), así como el operador is:

Los desarrolladores suelen usar type() y is, aunque estos pueden estar limitados en ciertos contextos, en cuyo caso, es mejor usar la función isinstance().

Comprobar si la variable es una cadena con type()

La función integrada type() se puede utilizar para devolver el tipo de datos de un objeto. Por ejemplo, esperamos que el valor devuelto por esta función sea <class 'str'>.

Vamos a inicializar una variable de cadena, con un par de otras variables que no son de cadena y probar esta función:

1
2
3
4
5
6
7
8
string = "'Do, or do not. There is no try.' - Yoda"
integer = 42
float = 3.14

# Print results
print("The type of string is ", type(string))
print("The type of integer is ", type(number))
print("The type of float is ", type(float))

Ahora, si ejecutamos este código, dará como resultado:

1
2
3
"The type of string is  <class 'str'>"
"The type of integer is  <class 'int'>"
"The type of float is  <class 'float'>"

Para aplicar esta lógica de manera que podamos alterar el flujo de código, podemos comparar el valor devuelto de la función type() con la clase str:

1
2
3
4
5
6
7
user_name = 35

# Checks if variable is a string
if (type(user_name)) == str:
    print("User's name is a string")
else:
    print("User's name is not a string")

Esto resulta en:

1
User's age is not a string

Verificar si la variable es una cadena con el operador es {#verificar si la variable es una cadena con un operador}

El operador is de Python es un operador de identidad, lo que significa que comprueba si dos variables comparadas apuntan a la misma ubicación de memoria.

Al igual que en el ejemplo anterior, hemos comparado el resultado de la función type() con la clase str, también podemos usar el operador is:

1
2
3
4
5
6
7
user_name = "John Doe"

# Checks if variable is a string
if (type(user_name)) is str:
    print("User's name is a string")
else:
    print("User's name is not a string")

Esto resulta en:

1
User's name is a string

Comprobar si la variable es una cadena con isinstance()

Ahora, el enfoque más seguro es la función isinstance(). Acepta dos argumentos: la variable que estamos revisando y el tipo que estamos buscando.

En nuestro caso, será una variable y la clase str.

Vamos a crear un par de variables y verificar sus tipos:

1
2
3
4
5
string = "Hello there!"
integer = 42

print("Is string a string?: ", isinstance(string, str))
print("Is integer a string?: ", isinstance(integer, str))

Esto resulta en:

1
2
"Is string a string?:  True"
"Is integer a string?:  False"

Conclusión

Python es un lenguaje de escritura dinámica, que introduce una gran cantidad de errores inducidos por el usuario. En muchos casos, no tenemos ninguna garantía de que una variable pasada a un método sea del tipo que esperamos que tenga.

En este tutorial, hemos cubierto tres formas de verificar si una variable es una cadena en Python: usando las funciones type() y isinstance(), así como el operador is.

Licensed under CC BY-NC-SA 4.0