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


当前回答

为了检查你的变量是不是你可以这样做:

s='Hello World'
if isinstance(s,str):
#do something here,

阻力的输出会给你一个布尔值True或False,这样你就可以相应地调整。 你可以通过以下方法检查你的值的首字母缩写: 类型(年代) 这将返回您键入'str',以便您可以在isistance函数中使用它。

其他回答

Python 3

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

Python 3中的检查。X就是:

isinstance(obj_to_test, str)

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

我认为可以安全地假设,如果repr()输出的最后一个字符是'或',那么无论它是什么,它都可以被认为是某种字符串。

def isStr(o):
    return repr(o)[-1] in '\'"'

我假设repr不会做任何太繁重的事情,它会返回一个至少有一个字符的字符串。您可以使用类似的方法来支持空字符串

repr(o)[-1:].replace('"', "'") == "'"

但这仍然假设repr返回一个字符串。

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

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

编辑:

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

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

Python 2

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

文档。

Python 2

检查对象o是否是字符串类型的子类的字符串类型:

isinstance(o, basestring)

因为STR和unicode都是basestring的子类。

要检查o的类型是否恰好是str:

type(o) is str

检查o是否是str的实例或str的任何子类:

isinstance(o, str)

如果将str替换为Unicode,上述方法也适用于Unicode字符串。

但是,您可能根本不需要进行显式类型检查。“鸭子打字”可能适合你的需要。见http://docs.python.org/glossary.html # term-duck-typing。

参见python中检查类型的规范方法是什么?