tipos saber numeros numero letras imprimir entrada entero datos convertir como python string variables types

python - saber - ¿Cómo comprobar si el tipo de una variable es una cadena?



tipos de variables en python (23)

Aquí está mi respuesta para admitir Python 2 y Python 3 junto con estos requisitos:

  • Escrito en código Py3 con un mínimo de código compatible con Py2.
  • Elimine el código de compatibilidad Py2 más tarde sin interrupción. Es decir, solo para eliminación, sin modificación del código Py3.
  • Evite utilizar un módulo compatible de six o similar, ya que tienden a ocultar lo que se está tratando de lograr.
  • A prueba de futuro para un potencial Py4.

import sys PY2 = sys.version_info.major == 2 # Check if string (lenient for byte-strings on Py2): isinstance(''abc'', basestring if PY2 else str) # Check if strictly a string (unicode-string): isinstance(''abc'', unicode if PY2 else str) # Check if either string (unicode-string) or byte-string: isinstance(''abc'', basestring if PY2 else (str, bytes)) # Check for byte-string (Py3 and Py2.7): isinstance(''abc'', bytes)

¿Hay una manera de verificar si el tipo de una variable en python es cadena ... como

isinstance(x,int);

para valores enteros?


Así es como lo hago:

if type(x) == type(str()):


Asi que,

Tienes muchas opciones para verificar si tu variable es una cadena o no:

a = "my string" type(a) == str # first a.__class__ == str # second isinstance(a, str) # third str(a) == a # forth type(a) == type('''') # fifth

Esta orden es para el propósito.


Edición basada en mejor respuesta a continuación. Ir alrededor de 3 respuestas y averiguar acerca de la frescura de la cadena de base.

Respuesta anterior: tenga cuidado con las cadenas Unicode, que puede obtener desde varios lugares, incluidas todas las llamadas COM en Windows.

if isinstance(target, str) or isinstance(target, unicode):



En Python 2.x, harías

isinstance(s, basestring)

basestring es la superclase abstracta de str y unicode . Se puede usar para probar si un objeto es una instancia de str o unicode .

En Python 3.x, la prueba correcta es

isinstance(s, str)

La clase de bytes no se considera un tipo de cadena en Python 3.


En Python 3.x o Python 2.7.6

if type(x) == str:


Hay muchas buenas sugerencias proporcionadas por otros aquí, pero no veo un buen resumen multiplataforma. Lo siguiente debería ser una buena introducción para cualquier programa de Python:

var2 = ''this is variable #2'' if type(var2) == str: print(''your variable is a string'') else: print(''your variable IS NOT a string'')

En esta función, usamos isinstance(object, classinfo) para ver si nuestra entrada es una str en Python 3 o una basestring en Python 2.


He visto:

hasattr(s, ''endswith'')


Manera alternativa para Python 2, sin usar la cadena de base:

isinstance(s, (str, unicode))

Pero todavía no funcionará en Python 3 ya que unicode no está definido (en Python 3).


Para probar si myvar es una cadena, también puede usar esto:

if type(myvar) == str


Para probar si myvar es una cadena, usa esto:

if type(myvar) == type(''abc'')


Python 2/3 incluyendo unicode

from __future__ import unicode_literals from builtins import str # pip install future isinstance(''asdf'', str) # True isinstance(u''asdf'', str) # True

http://python-future.org/overview.html


Sé que este es un tema antiguo, pero al ser el primero que se muestra en google y dado que no encuentro ninguna de las respuestas satisfactoria, lo dejo aquí para futuras referencias:

six es una biblioteca de compatibilidad de Python 2 y 3 que ya cubre este problema. Entonces puedes hacer algo como esto:

import six if isinstance(value, six.string_types): pass # It''s a string !!

Inspeccionando el código, esto es lo que encuentras:

import sys PY3 = sys.version_info[0] == 3 if PY3: string_types = str, else: string_types = basestring,


Si no desea depender de bibliotecas externas, esto funciona tanto para Python 2.7+ como para Python 3 ( http://ideone.com/uB4Kdc ):

# your code goes here s = ["test"]; #s = "test"; isString = False; if(isinstance(s, str)): isString = True; try: if(isinstance(s, basestring)): isString = True; except NameError: pass; if(isString): print("String"); else: print("Not String");


Simplemente puede usar la función isinstance para asegurarse de que los datos de entrada tengan una cadena de formato o unicode . Los siguientes ejemplos te ayudarán a entender fácilmente.

>>> isinstance(''my string'', str) True >>> isinstance(12, str) False >>> isinstance(''my string'', unicode) False >>> isinstance(u''my string'', unicode) True


También quiero tener en cuenta que si desea comprobar si el tipo de una variable es un tipo específico, puede comparar el tipo de la variable con el tipo de un objeto conocido.

Para cuerdas puedes usar esto

var = 1 if type(var) == int: print(''your variable is an integer'')


tu puedes hacer:

type(s) == type('''')

o:

def isstring(s): # if we use Python 3 if (sys.version_info[0] >= 3): return isinstance(s, str) # we use Python 2 return isinstance(s, basestring)

¡espero que esto ayude!


basestring que basestring no está definido en Python3, este pequeño truco podría ayudar a que el código sea compatible:

try: # check whether python knows about ''basestring'' basestring except NameError: # no, it doesn''t (it''s Python3); use ''str'' instead basestring=str

después de eso, puede ejecutar la siguiente prueba tanto en Python2 como en Python3

isinstance(myvar, basestring)


>>> thing = ''foo'' >>> type(thing).__name__ == ''str'' or type(thing).__name__ == ''unicode'' True


a = ''1000'' # also tested for ''abc100'', ''a100bc'', ''100abc'' isinstance(a, str) or isinstance(a, unicode)

devuelve True

type(a) in [str, unicode]

devuelve True


s = ''123'' issubclass(s.__class__, str)


varA = "hey" if type(varA) == str: print "it is a string"