How can I do something like:
>>> s = u'hello' >>> isinstance(s,str) False
But I would like isinstance to return True for this Unicode encoded string. Is there a Unicode string object type?
Advertisement
Answer
Test for str:
isinstance(unicode_or_bytestring, str)
or, if you must handle bytestrings, test for bytes separately:
isinstance(unicode_or_bytestring, bytes)
The two types are deliberately not exchangible; use explicit encoding (for str -> bytes) and decoding (bytes -> str) to convert between the types.
In Python 2, where the modern Python 3 str type is called unicode and str is the precursor of the Python 3 bytes type, you could use basestring to test for both:
isinstance(unicode_or_bytestring, basestring)
basestring is only available in Python 2, and is the abstract base type of both str and unicode.
If you wanted to test for just unicode, then do so explicitly:
isinstance(unicode_tring, unicode)