2013-10-17 65 views
-8

我有一個base-64編碼的字符串。通過JSON發送字節數據的Python 2.x和3.x兼容代碼

some_s = base64.encodestring(....) 

在Python 2.7中,我可以將這樣的字符串序列化爲JSON(json.dumps)。

在Python 3.3 'some_s' 爲字節串,需要convertered到「STR第一:

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

然後some_s2可以被序列化到JSON。

不幸的是Python 2.7不接受編碼參數作爲str()調用的一部分。

你會如何在Python 2.7和Python 3.3中編寫轉換代碼?

+6

爲什麼這麼多的反對票?這似乎是一個合理的問題。 – dawg

回答

5

可以檢測你的價值是str類型不是:

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

只有在Python 3 bytessome_s。注意.decode()的方法,而不是str(some_s, encoding='ascii'),這將在Python 2和3兩個工作。

+0

啊,就是你。這就是你使用一個愚蠢的'匿名'的名字,你從我得到的建議。是的,在這種情況下,類型檢測是您的最佳選擇。 –