-8

我有一个 base-64 编码的字符串。

some_s = base64.encodestring(....)

在 Python 2.7 中,我可以将这样的字符串序列化为 JSON (json.dumps)。

在 Python 3.3 中,'some_s' 是一个字节字符串,需要先转换为 'str:

some_s2 = str(some_s2, encoding='ascii')

然后 some_s2 可以序列化为 JSON。

不幸的是,Python 2.7 不接受编码参数作为 str() 调用的一部分。

您将如何在此处编写同时运行 Python 2.7 和 Python 3.3 的转换代码?

4

1 回答 1

4

您可以检测到您的值不是 type str

some_s = base64.encodestring(....)
if not isinstance(some_s, str):
    some_s = some_s.decode('ascii')

只有在 Python 3 中some_sbytes. 还要注意这个.decode()方法,而不是str(some_s, encoding='ascii'),它可以在 Python 2 和 3 中工作。

于 2013-10-17T10:19:46.320 回答