為了整理目前 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 輸出是正常
在 Visual Studio 2013 的Console輸出視窗中,卻一樣會有亂碼
但是在 Visual Studio 2013 裡的 IronPython 2.7 Interactive 中執行的結果也是正常
嗯 … 一定是 Visual Studio 2013 那邊的設定沒有調整好… 不過我想這不是資料科學分析的重點,就不深入研究了
題外話:如果是一般字串與物件間的轉換,就不需要這樣麻煩