如何判断一个Python对象是否是字符串?

508 投票
15 回答
430613 浏览
提问于 2025-04-15 13:44

我该怎么检查一个Python对象是不是字符串(可以是普通字符串或者Unicode字符串)呢?

15 个回答

199

Python 2

要检查一个对象 o 是否是字符串类型或者字符串类型的子类,可以这样做:

isinstance(o, basestring)

因为 strunicode 都是 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

Python 2

要检查一个对象 obj 是否是字符串,可以使用 isinstance(obj, basestring) 这个方法。

文档链接

撰写回答