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)