2014-11-13 110 views
0

我有一個對象,如:如何將python對象轉換爲非ascii字符不變的字符串?

obj1 = { 
    'k1' : 'v1', 
    'k2' : [ 
     { 
      'k21' : '中文字符' 
     } 
    ] 
} 

我想將它轉換爲像一個字符串:使用

'''{ 'k1' : 'v1', 'k2' : [ { 'k21' : '中文字符' } ] } ''' 

STR()給我這個:

'''{'k2': [{'k21': '\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6'}], 'k1': 'v1'}''' 

注意「 \ xe4'有四個字符。我想str()只是調用repr()。

一個解決方案是遍歷對象的所有關鍵點並遞歸處理它。我想知道是否有其他方法來實現它。例如將'\ xe4'轉換爲'中'或直接將obj1轉換爲例外結果。

謝謝!

+3

從字典轉換成JSON的步驟字符串可以很容易地使用['json'庫](https://docs.python.org/3/library/json.html) – CoryKramer

+0

這是必需的,所以你的JavaScript結構可以表示爲json。你嵌入的Unicode字符,必須使用多個字節作爲「外來」字符。 –

+0

Python 3處理此罰款,你使用2.x? –

回答

1

像什麼@Cyber​​建議,使用json將是一種選擇,就像這樣:

import json 

In [11]: obj1 = { 
    ...:  'k1' : 'v1', 
    ...:  'k2' : [ 
    ...:   { 
    ...:    'k21' : '中文字符' 
    ...:   } 
    ...:  ] 
    ...: } 
     # remember to set ensure_ascii=False 
In [12]: s = json.dumps(obj1, ensure_ascii=False) 

In [13]: print s 
{"k2": [{"k21": "中文字符"}], "k1": "v1"} 

我在的Python 2.7.8