【发布时间】:2016-11-07 11:45:42
【问题描述】:
我使用futurize 轻轻地将我的模块迁移到 Python3,现在我的文件顶部有这个:
from builtins import str
future.types.newstr.BaseNewStr 导致我对 isinstance 的结果错误:
>>> isinstance('foo', (unicode, str))
False
如何正确解决这个问题?
请注意,添加from __future__ import unicode_literals 并没有帮助,因为isinstance 是从其他地方调用的函数调用的,如果unicode_literals 正确导入,我无法控制。
编辑
我发现我可以用这个:
def foo(string):
import six
if isinstance(string, six.string_types):
return six.types.StringType('bar')
这看起来非常样板......
【问题讨论】:
-
可能是因为您要导入的
str解析为class对象(type(str)),而标准str解析为type。反正这是我的猜测。 -
看来你需要native string type。
标签: python string python-2.7