是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
是否有一种方法可以检查python中变量的类型是否为字符串,例如:
isinstance(x,int);
对于整数值?
当前回答
总结:
如果你既想要Python2又想要Python3,并且还想要包含unicode,似乎没有一种可移植的方法来做到这一点。我最后用了这个习语:
# Near the top of my program
if sys.version_info[0] >= 3:
basestring = str
然后,任何时候我想测试一个对象,看看它是否是字符串:
if isinstance(obj, basestring):
...
坦率地说,Python3删除了basestring和types.StringTypes,这让我有点震惊。我认为没有理由放弃他们,留下他们中的任何一个都会使这个问题得到解决。
其他回答
在Python 3中。X,检查s是否是字符串的正确方法是
isinstance(s, str)
在Python 3中,bytes类不被认为是字符串类型。
在Python 2中。X,正确的检查是
isinstance(s, basestring)
Basestring是STR和unicode的抽象超类。它可以用来测试一个对象是否是str或unicode的实例。
如果检查的不是整型和字符串,类型模块也存在。 http://docs.python.org/library/types.html
s = '123'
issubclass(s.__class__, str)
因为在Python3中没有定义basestring,这个小技巧可能有助于使代码兼容:
try: # check whether python knows about 'basestring'
basestring
except NameError: # no, it doesn't (it's Python3); use 'str' instead
basestring=str
之后,您可以在Python2和Python3上运行以下测试
isinstance(myvar, basestring)
使用type()或isinstance()
我不知道为什么在我面前没有一个答案包含这个简单的类型(my_variable)是str语法,但使用type()这样似乎是最符合逻辑和最简单的,到目前为止:
(在Python3中测试):
# Option 1: check to see if `my_variable` is of type `str`
type(my_variable) is str
# Option 2: check to see if `my_variable` is of type `str`, including
# being a subclass of type `str` (ie: also see if `my_variable` is any object
# which inherits from `str` as a parent class)
isinstance(my_variable, str)
Python type()内置函数文档在这里:https://docs.python.org/3/library/functions.html#type。它的部分内容如下。注意关于isinstance()的说明:
类类型(对象) 类类型(名称,基础,字典,**kwds) 使用一个参数,返回对象的类型。返回值是一个类型对象,通常与object.__class__返回的对象相同。 建议使用isinstance()内置函数测试对象的类型,因为它考虑了子类。
因此,如果检查的是类对象而不是简单变量的类型,并且需要考虑子类,则使用isinstance()代替。请在这里查看其文档:https://docs.python.org/3/library/functions.html#isinstance。
示例代码:
my_str = "hello"
my_int = 7
print(type(my_str) is str)
print(type(my_int) is str)
print()
print(isinstance(my_str, str))
print(isinstance(my_int, str))
输出:
真正的 假 真正的 假