是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
当前回答
Python 2的另一种方法,不使用basestring:
isinstance(s, (str, unicode))
但仍然不能在Python 3中工作,因为unicode没有定义(在Python 3中)。
其他回答
如果检查的不是整型和字符串,类型模块也存在。 http://docs.python.org/library/types.html
您可以简单地使用isinstance函数来确保输入数据的格式为字符串或unicode。下面的例子会帮助你更容易理解。
>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string', unicode)
True
>>> thing = 'foo'
>>> type(thing).__name__ == 'str' or type(thing).__name__ == 'unicode'
True
以下是我对同时支持Python 2和Python 3的回答,以及这些要求:
用Py3代码编写,使用最少的Py2 compat代码。 稍后不中断地删除Py2 compat代码。也就是说,只删除Py3代码,不修改。 避免使用六个或类似的compat模块,因为他们往往隐藏什么 就是努力去实现。 未来的潜在的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)
在Python 3中。X,检查s是否是字符串的正确方法是
isinstance(s, str)
在Python 3中,bytes类不被认为是字符串类型。
在Python 2中。X,正确的检查是
isinstance(s, basestring)
Basestring是STR和unicode的抽象超类。它可以用来测试一个对象是否是str或unicode的实例。