是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
当前回答
我看过:
hasattr(s, 'endswith')
其他回答
Python 2的另一种方法,不使用basestring:
isinstance(s, (str, unicode))
但仍然不能在Python 3中工作,因为unicode没有定义(在Python 3中)。
我知道这是一个老话题,但作为谷歌上的第一个,鉴于我对任何一个答案都不满意,我将把这个留在这里供将来参考:
six是一个Python 2和3兼容性库,已经涵盖了这个问题。然后你可以这样做:
import six
if isinstance(value, six.string_types):
pass # It's a string !!
检查代码,如下所示:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str,
else:
string_types = basestring,
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
返回True
type(a) in [str, unicode]
返回True
在Python 3中。X,检查s是否是字符串的正确方法是
isinstance(s, str)
在Python 3中,bytes类不被认为是字符串类型。
在Python 2中。X,正确的检查是
isinstance(s, basestring)
Basestring是STR和unicode的抽象超类。它可以用来测试一个对象是否是str或unicode的实例。
我还想注意,如果你想检查一个变量的类型是否是特定的类型,你可以将变量的类型与一个已知对象的类型进行比较。
对于字符串,你可以使用这个
type(s) == type('')