python 2中国語を辞書のキーとするときに発生するエラー
1053 ワード
シーンは次のとおりです.
mysqlライブラリには、本省各地の市の指標であり、地市名は中国語の名前で表されている日本のレポートがあります.のように
都市
人口
広州市
300
深セン市
400
次に、excelファイルにも似たような2 Dテーブルがあります.
都市
人口
深セン市
広州市
mysqlから各指標データを取り出してexcelに書き込む必要があります.mysqlテーブルの順序はexcelの順序とは異なるので、mysqlのデータを取り出し、excelの最初の列の内容に基づいてmysqlのデータと一致し、各指標を得てexcelに書き込む必要があります.ここで便利な方法は、mysqlから取り出したデータを1つの辞書に保存することです.この辞書は都市名をキーとし、各指標項目の名前と値は小さな辞書を構成し、値として次のようにします.
しかしpython 2では中国語処理に問題があることはよく知られている.私のプログラムでは、得られた辞書、その中のキー、つまり都市名はすべて16進数表示の値になりました.例えば「広州市」は
また、まずexcelの最初の列の都市名を読み出し、それから得られた辞書から各指標値を取得する必要があります.excelを読むにはopenpyxlを使用しています.多くのテストを経て、読み込んだ都市名が
これで穴だ
最終的に私の方法はexcelから読んだ都市名を
解決する
mysqlライブラリには、本省各地の市の指標であり、地市名は中国語の名前で表されている日本のレポートがあります.のように
都市
人口
広州市
300
深セン市
400
次に、excelファイルにも似たような2 Dテーブルがあります.
都市
人口
深セン市
広州市
mysqlから各指標データを取り出してexcelに書き込む必要があります.mysqlテーブルの順序はexcelの順序とは異なるので、mysqlのデータを取り出し、excelの最初の列の内容に基づいてmysqlのデータと一致し、各指標を得てexcelに書き込む必要があります.ここで便利な方法は、mysqlから取り出したデータを1つの辞書に保存することです.この辞書は都市名をキーとし、各指標項目の名前と値は小さな辞書を構成し、値として次のようにします.
result_dict = {' ': {'rk': 300, 'mj': 500}, ' ': {'rk': 400, 'mj': 300}}
しかしpython 2では中国語処理に問題があることはよく知られている.私のプログラムでは、得られた辞書、その中のキー、つまり都市名はすべて16進数表示の値になりました.例えば「広州市」は
\xe5\xb9\xbf\xe5\xb7\x9e\xe5\xb8\x82
になりましたまた、まずexcelの最初の列の都市名を読み出し、それから得られた辞書から各指標値を取得する必要があります.excelを読むにはopenpyxlを使用しています.多くのテストを経て、読み込んだ都市名が
u'\u5e7f\u5dde\u5e02'
になったことがわかりました.これで穴だ
最終的に私の方法はexcelから読んだ都市名を
encode
にすることです.# m = u'\u5e7f\u5dde\u5e02'
m.encode('utf-8')
解決する