如何检查Python对象是否为字符串(常规或Unicode)?


当前回答

你可以通过连接一个空字符串来测试它:

def is_string(s):
  try:
    s += ''
  except:
    return False
  return True

编辑:

更正我的回答后的评论指出,这失败与列表

def is_string(s):
  return isinstance(s, basestring)

其他回答

对于类似字符串的良好鸭子类型方法,它具有与Python 2同时使用的好处。X和3.x:

def is_string(obj):
    try:
        obj + ''
        return True
    except TypeError:
        return False

Wisefish在切换到isinstance方法之前与duck-typing很接近,只是+=对于列表的含义与+不同。

Python 2

对于测试对象obj,使用isinstance(obj, basestring)。

文档。

Python 3

在Python 3中。x basestring不再可用,因为str是唯一的字符串类型(与Python 2的语义相同)。x的unicode)。

Python 3中的检查。X就是:

isinstance(obj_to_test, str)

这遵循了官方2to3转换工具的修复:将basestring转换为str。

我发现这句话更夸张:

if type(aObject) is str:
    #do your stuff here
    pass

由于类型对象是单例的,is可以用来比较对象和STR类型

它很简单,使用以下代码(我们假设提到的对象是obj)-

if type(obj) == str:
    print('It is a string')
else:
    print('It is not a string.')