来自future和six的Python3/str和string_类型中的基串等效项不起作用

来自future和six的Python3/str和string_类型中的基串等效项不起作用,python,python-3.x,python-2.x,python-2to3,Python,Python 3.x,Python 2.x,Python 2to3,我有一个用Python2.x编写的脚本,它检查数据类型中有许多不同的看不见的变量。我尝试将代码移动到python 3.x,其中一个变量正在压碎我的程序,它的值是日期:2018-04-21 04:00:10。 我用这段代码捕捉到错误: raise RuntimeError("Value type not handled {}:{}".format(name,value)) 退回此邮件: 运行时错误:未处理值类型日期:2018-04-21 04:00:10 敏感代码可以在下面找到 python 2

我有一个用Python2.x编写的脚本,它检查数据类型中有许多不同的看不见的变量。我尝试将代码移动到python 3.x,其中一个变量正在压碎我的程序,它的值是日期:2018-04-21 04:00:10。 我用这段代码捕捉到错误:

raise RuntimeError("Value type not handled {}:{}".format(name,value))
退回此邮件: 运行时错误:未处理值类型日期:2018-04-21 04:00:10

敏感代码可以在下面找到

python 2.x中的代码

if isinstance(value, basestring):
    return ("text", "'{}'".format(escape_single_quote(value.encode("utf-8"))))
if isinstance(value, str):
    return ("text", "'{}'".format(escape_single_quote(value)))
python 3.x中的代码

if isinstance(value, basestring):
    return ("text", "'{}'".format(escape_single_quote(value.encode("utf-8"))))
if isinstance(value, str):
    return ("text", "'{}'".format(escape_single_quote(value)))

我还尝试过使用six和future库中的字符串类型。

到底是什么问题?您的尝试有什么问题?过去,基串会将日期:2018-04-21 04:00:10作为基串数据类型,而现在str不会,我需要一个适用于Python 3和Python 2中此格式的适当数据类型
isinstance(value,basestring)
相当于
isinstance(value,(str,unicode))
,这意味着这两种类型的实例(因为它们在该版本中不同)。您是否尝试过在Python3中使用长格式?另外请注意,如果您明确检查Python的运行版本,您可能会有两段不同的代码。Python 3中的str包括unicode,正如我所读的一样,如上所述,我尝试了str,还使用了future和六个库中的string_type,但日期:2018-04-21 04:00:10没有得到注意,这很好听。请注意,您确实不应该使用
type()
函数进行类型检查。如果必须这样做,最好使用类似于
isinstance(value,datetime.datetine)
的方法,而不是与
type(value)==datetime.datetine
进行比较(因为后者是多态的)。