使用isinstance测试Unicode字符串

时间:2014-07-01 16:09:45

标签: python unicode typechecking

我该怎么做:

>>> s = u'hello'
>>> isinstance(s,str)
False

但我希望isinstance为此Unicode编码字符串返回True。是否有Unicode字符串对象类型?

3 个答案:

答案 0 :(得分:14)

对于 Python2 ,您可以使用basestring来测试两者

isinstance(unicode_or_bytestring, basestring)

basestring仅在Python 2中可用,并且是strunicode的抽象基类型。

如果你想测试只是 unicode,那么明确地这样做:

isinstance(unicode_tring, unicode)

对于Python 3,仅测试str

isinstance(unicode_or_bytestring, str)

或者,如果您必须处理字节串,请单独测试bytes

isinstance(unicode_or_bytestring, bytes)

这两种类型是故意不可交换的;使用显式编码(strbytes)和解码(bytesstr)来转换类型。

答案 1 :(得分:7)

  

是否存在Unicode字符串对象类型?

是的,它被称为unicode

>>> s = u'hello'
>>> isinstance(s, unicode)
True
>>>

请注意,在Python 3.x中,此类型已被删除,因为all strings are now Unicode

答案 2 :(得分:2)

  

是否存在Unicode字符串对象类型?

是的,这有效:

window.onstorage

但是,只有当您知道它是unicode时,这才有用。 另一个解决方案是使用six包,它可以使您免于python2.x和python3.x转换并捕获>>> s = u'hello' >>> isinstance(s, unicode) True >>> unicode

str