用于通过JSON发送字节数据的Python 2.x和3.x兼容代码
我有一个用base-64编码的字符串用于通过JSON发送字节数据的Python 2.x和3.x兼容代码,python,json,python-2.7,python-3.x,base64,Python,Json,Python 2.7,Python 3.x,Base64,我有一个用base-64编码的字符串 some_s = base64.encodestring(....) 在Python2.7中,我可以将这样的字符串序列化为JSON(JSON.dumps) 在Python 3.3中,“some_”是一个字节字符串,需要首先转换为“str: some_s2 = str(some_s2, encoding='ascii') 然后可以将一些_s2序列化为JSON 不幸的是,Python2.7不接受编码参数作为str()调用的一部分 您将如何在此处编写同时使用P
some_s = base64.encodestring(....)
在Python2.7中,我可以将这样的字符串序列化为JSON(JSON.dumps)
在Python 3.3中,“some_”是一个字节字符串,需要首先转换为“str:
some_s2 = str(some_s2, encoding='ascii')
然后可以将一些_s2序列化为JSON
不幸的是,Python2.7不接受编码参数作为str()调用的一部分
您将如何在此处编写同时使用Python 2.7和Python 3.3运行的转换代码?您可以检测到您的值不是类型str
:
some_s = base64.encodestring(....)
if not isinstance(some_s, str):
some_s = some_s.decode('ascii')
只有在Python3中才有
类型为字节的一些
。请注意.decode()
方法,而不是str(一些,编码为ascii')
,这在Python 2和3中都可以使用。啊,是你。这就是你用一个愚蠢的“匿名”名字得到的,你可以从我这里得到建议。是的,在这种情况下,类型检测是最好的选择。为什么会有这么多的反对票?这似乎是一个合理的问题。