Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于通过JSON发送字节数据的Python 2.x和3.x兼容代码_Python_Json_Python 2.7_Python 3.x_Base64 - Fatal编程技术网

用于通过JSON发送字节数据的Python 2.x和3.x兼容代码

用于通过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

我有一个用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()调用的一部分

您将如何在此处编写同时使用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中都可以使用。

啊,是你。这就是你用一个愚蠢的“匿名”名字得到的,你可以从我这里得到建议。是的,在这种情况下,类型检测是最好的选择。为什么会有这么多的反对票?这似乎是一个合理的问题。