HOWTO · Python

Verifique que la variable sea cadena o no en Python

Este tutorial demuestra cómo verificar si una variable es una cadena en Python

El tipo de datos de cadena se utiliza para representar una colección de caracteres. Este tutorial discutirá cómo verificar si una variable es un tipo de cadena o no.

Utilice la función type() para comprobar si una variable es una cadena o no

La función type() devuelve el tipo de clase de la variable pasada. El siguiente código muestra cómo usar esta función para verificar si una variable es una cadena o no.

value = "Yes String"
if type(value) == str:
    print("True")
else:
    print("False")

Producción :

True

Sin embargo, vale la pena señalar que este método generalmente no se recomienda y se denomina unidiomático en Python. La razón detrás de esto es porque el operador == compara la variable solo para la clase de cadena y devolverá False para todas sus subclases.

Utilice la función isinstance() para comprobar si una variable es una cadena o no

Por lo tanto, se recomienda utilizar la función isinstance() sobre la tradicional type(). La función isinstance() comprueba si un objeto pertenece a la subclase especificada. El siguiente fragmento de código explicará cómo podemos usarlo para buscar objetos de cadena.

value = "Yes String"
if isinstance(value, str):
    print("True")
else:
    print("False")

Producción :

True

En Python 2, podemos usar la clase basestring, que es una clase abstracta para str y unicode, para probar si un objeto es una instancia de str o unicode. Por ejemplo,

value = "Yes String"
if isinstance(value, basestring):
    print("True")
else:
    print("False")

Producción :

True

Para usar el método anterior en Python 3, podemos usar el módulo six. Este módulo tiene funciones que nos permiten escribir código compatible tanto con Python 2 como con 3.

La función string_types() devuelve todos los tipos posibles de datos de cadena. Por ejemplo,

import six

value = "Yes String"
if isinstance(value, six.string_types):
    print("True")
else:
    print("False")

Producción :

True