2016-10-01 65 views
1

['douban_info']在我的數據集是關於其存儲在JSON在中國電影的信息,所以當我做df['douban_info'][0],它返回:如何在Python中輸出漢字?

enter image description here

,中國文字都變成了之類的東西\u7834\u6653\u8005,我無法輕鬆閱讀。輸出時可以讓Python將它們變成原始的中文嗎?

我在Jupyter Notebook中使用Python 2.7。

+1

使用Python 3會解決這個問題,因爲它改變了'repr'返回,而不是統一'bytes' – Eric

+0

@Eric是有可能,我就不能進口'在Python 2中的任何東西來解決這個問題? (比如我從未來進口分工)。改變python版本是一件大事。 – cqcn1991

+1

如果你使用了很多中文腳本,你會比3更好地使用3。 – Eric

回答

2

這就是Python 2的工作原理。在爲列表和字符串生成顯示字符串時,它默認顯示repr()。你必須print字符串看Unicode字符:

>>> D = {u'aka': [u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)', u'\u9ece\u660e\u65f6\u5206']} 
>>> D[u'aka'][0] 
u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)' 
>>> print D[u'aka'][0] 
2019獵血都市(港) 

如果你不能移動到Python 3,你必須使自己的顯示處理例行程序,如果你不喜歡默認的repr()顯示。喜歡的東西:

D = {u'aka':[u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)',u'\u9ece\u660e\u65f6\u5206']} 

def dump(item): 
    L = [] 
    if isinstance(item,dict): 
     for k,v in item.items(): 
      L.append(dump(k) + ':') 
      L.append(dump(v)) 
     return '{' + ', '.join(L) + '}' 
    elif isinstance(item,list): 
     for i in item: 
      L.append(dump(i)) 
     return '[' + ', '.join(L) + ']' 
    else: 
     return "u'" + item + "'" 

print dump(D) 

輸出:

{u'aka':, [u'2019獵血都市(港)', u'黎明時分']} 

注意這是不完整的通用傾銷程序。

在Python 3 repr()已更新:

>>> print(D) 
{'aka': ['2019獵血都市(港)', '黎明時分']} 
-1

致電json.dumpjson.dumpsensure_ascii=False選項,那麼你將得到原始的utf-8編碼字符串。

通過https://docs.python.org/2/library/json.html

json.dump(obj, fp, skipkeys=False, **ensure_ascii=True**, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)引用¶

你可以嘗試

df['douban_info'][0].to_json(ensure_ascii=False)

獲得屬性與中國文字顯示的值。

+0

你的意思是我應該這樣做,當我讀取數據到熊貓數據框? – cqcn1991

+0

我不熟悉熊貓。你可以嘗試從http://stackoverflow.com/questions/38406511/write-json-format-using-pandas-series-and-dataframe的代碼,我認爲這些選項是相同的關於熊貓JSON函數。 –

+0

這不是問題所在。這不是一個json字符串,因爲它在每個字符串開始之前包含'u''。問題似乎是repr不會保留Unicode字符。 – Eric