我该怎么做:
>>> s = u'hello'
>>> isinstance(s,str)
False
但我希望isinstance
为此Unicode编码字符串返回True
。是否有Unicode字符串对象类型?
答案 0 :(得分:14)
对于 Python2 ,您可以使用basestring
来测试两者:
isinstance(unicode_or_bytestring, basestring)
basestring
仅在Python 2中可用,并且是str
和unicode
的抽象基类型。
如果你想测试只是 unicode
,那么明确地这样做:
isinstance(unicode_tring, unicode)
对于Python 3,仅测试str
:
isinstance(unicode_or_bytestring, str)
或者,如果您必须处理字节串,请单独测试bytes
:
isinstance(unicode_or_bytestring, bytes)
这两种类型是故意不可交换的;使用显式编码(str
到bytes
)和解码(bytes
到str
)来转换类型。
答案 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