2014/4/26

Python Dictionary 資料結構中文輸出解決方式

 

為了整理目前 python 在資料科學上學習的進度,自擬了一個輸入資料如下

以 Dict 的資料結構進行輸入

 
people_point = {"A": {"核四興建": 1 , "反服貿":9 , "破音歌神":  2  ,  "石虎保育": 10  },
         "B":  {"核四興建":2 ,  "反服貿":8   ,  "石虎保育":  10 },
         "C":  {"核四興建": 10 ,  "反服貿": 1 , "破音歌神":  9  ,  "石虎保育":1   },
         "D": {"核四興建": 9   , "破音歌神":  4  ,  "石虎保育": 2  },
         "E": {"核四興建": 5    , "破音歌神":  5  ,  "石虎保育":5   },
         "F": {"核四興建":9 ,    "破音歌神": 4   ,  "石虎保育":  1 }
             }

然後在輸出時遇上了問題:

{'A': {'\xa4\xcf\xaaA\xb6T': 9, '\xa5\xdb\xaa\xea\xabO\xa8|': 10, '\xaf}\xad\xb5\xbaq\xaf\xab': 2, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 1}, 'C': {'\xa4\xcf\xaaA\xb6T': 1, '\xa5\xdb\xaa\xea\xabO\xa8|': 1, '\xaf}\xad\xb5\xbaq\xaf\xab': 9, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 10}, 'B': {'\xa4\xcf\xaaA\xb6T': 8, '\xa5\xdb\xaa\xea\xabO\xa8|': 10, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 2}, 'E': {'\xa5\xdb\xaa\xea\xabO\xa8|': 5, '\xaf}\xad\xb5\xbaq\xaf\xab': 5, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 5}, 'D': {'\xa5\xdb\xaa\xea\xabO\xa8|': 2, '\xaf}\xad\xb5\xbaq\xaf\xab': 4, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 9}, 'F': {'\xa5\xdb\xaa\xea\xabO\xa8|': 1, '\xaf}\xad\xb5\xbaq\xaf\xab': 4, '\xae\xd6\xa5|\xbf\xb3\xab\xd8': 9}}

一開始上網查詢,確定是編碼的問題

但無論我如何將 dict 轉換成 str 格式就是無法轉成 unicode 格式

我想這可能是 dict 資料格式先天上的限制,我是使用 Python 2.7 的版本

後來查詢到解決方法如下:

在程式的最前頭加上 import json

在輸出時用這樣的語法輸出

print json.dumps(people_point["A"], encoding="utf-8", ensure_ascii=False) #指定

print json.dumps(people_point, encoding="utf-8", ensure_ascii=False) # 輸出整個 dict

則結果如下:

輸出結果1:

{"反服貿": 9, "石虎保育": 10, "破音歌神": 2, "核四興建": 1}

輸出結果2:

{"A": {"反服貿": 9, "石虎保育": 10, "破音歌神": 2, "核四興建": 1}, "C": {"反服貿": 1, "石虎保育": 1, "破音歌神": 9, "核四興建": 10}, "B": {"反服貿": 8, "石虎保育": 10, "核四興建": 2}, "E": {"石虎保育": 5, "破音歌神": 5, "核四興建": 5}, "D": {"石虎保育": 2, "破音歌神": 4, "核四興建": 9}, "F": {"石虎保育": 1, "破音歌神": 4, "核四興建": 9}}

嗯… 看得到中文,還是比較親切的 

==備註==

我在 Python IDEL 輸出是正常

image

在 Visual Studio 2013 的Console輸出視窗中,卻一樣會有亂碼

image

但是在 Visual Studio 2013 裡的 IronPython 2.7 Interactive 中執行的結果也是正常

image

嗯 … 一定是 Visual Studio 2013 那邊的設定沒有調整好… 不過我想這不是資料科學分析的重點,就不深入研究了

題外話:如果是一般字串與物件間的轉換,就不需要這樣麻煩

沒有留言:

張貼留言