如何判断一个Python对象是否是字符串?
我该怎么检查一个Python对象是不是字符串(可以是普通字符串或者Unicode字符串)呢?
15 个回答
199
Python 2
要检查一个对象 o
是否是字符串类型或者字符串类型的子类,可以这样做:
isinstance(o, basestring)
因为 str
和 unicode
都是 basestring
的子类。
如果你想检查 o
的类型是否完全是 str
,可以用下面的方法:
type(o) is str
如果你想检查 o
是否是 str
或者任何 str
的子类,可以用这个:
isinstance(o, str)
以上的方法同样适用于Unicode字符串,只需把 str
替换成 unicode
就可以了。
不过,其实你可能根本不需要进行明确的类型检查。使用“鸭子类型”可能更符合你的需求。详细信息可以查看 这里。
你也可以参考 在Python中检查类型的标准方法是什么?
299
Python 3
在Python 3.x中,basestring
这个东西不再存在了,因为现在只有一种字符串类型,就是str
,它的用法和Python 2.x中的unicode
是一样的。
所以在Python 3.x中,检查字符串的方式就很简单:
isinstance(obj_to_test, str)
这个变化是根据官方的2to3
转换工具的修复方案来的,主要是把basestring
转换成str
。
330