在 Python 2.x 中,您可以
isinstance(s, basestring)
basestring
是str
和unicode
的抽象超类 。它可以用来测试一个对象是str
还是unicode
的实例。
在 Python 3.x 中,正确的测试是
isinstance(s, str)
在 Python 3 中, bytes
类不被视为字符串类型。
我知道这是一个古老的话题,但是作为第一个显示在 Google 上的话题,鉴于我没有找到满意的答案,因此我将其留在此处以供将来参考:
第六个是 Python 2 和 3 兼容性库,它已经解决了这个问题。然后,您可以执行以下操作:
import six
if isinstance(value, six.string_types):
pass # It's a string !!
检查代码,您会发现:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str,
else:
string_types = basestring,
在 Python 3.x 或 Python 2.7.6 中
if type(x) == str: