2013-05-31 80 views
-2

我無法解析dictlist包含asciiunicode。這是我漂亮的字符串:錯誤解碼混合編碼JSON字符串

pretty_string = """{ 
    "list": [ 
     "this_keyword_in_ascii", 
     u"\u0627\u0644\u0623\u0633\u062f",     # unicoded arabic 
     u"\u0633\u0648\u0631\u064a\u0627", 
     u"\u0627\u0644\u0625\u0631\u0647\u0627\u0628" 
    ] 
} 
""" 

dict = cjson.decode(pretty_string)解碼時,我得到了以下錯誤:DecodeError('cannot parse JSON description')。我試過pretty_string.decode('unicode_escape')無濟於事。請幫忙!

+0

這是低調,因爲這是一個愚蠢的問題? – knutole

+0

你真的想解碼python字典嗎? (或編碼) – oleg

+0

這是一個字符串.. – knutole

回答

2

你做不是有一個JSON字符串。你有一個Python文字。使用ast.literal_eval() function代替:

>>> literal_eval('''\ 
... { 
...  "list": [ 
...   "this_keyword_in_ascii", 
...   u"\u0627\u0644\u0623\u0633\u062f",     # unicoded arabic 
...   u"\u0633\u0648\u0631\u064a\u0627", 
...   u"\u0627\u0644\u0625\u0631\u0647\u0627\u0628" 
...  ] 
... } 
... ''') 
{'list': ['this_keyword_in_ascii', u'\u0627\u0644\u0623\u0633\u062f', u'\u0633\u0648\u0631\u064a\u0627', u'\u0627\u0644\u0625\u0631\u0647\u0627\u0628']} 

JSON字符串從未與u""開始,這是一個Python的符號。 JSON也不混合字節值和unicode值,JSON字符串始終是Unicode。

你可能想看看產生這種結構的東西;也許該字符串的產生應該使用json.dumps()而不是print,str()repr()

+0

感謝這個,學習了很多。 – knutole

1

您正試圖解碼爲JSON包含Python字典的字符串。您應該使用JSON的decode,或者使用Python字典的encode