python2 以中文为字典的键时出现的错误

场景是这样的:

在 mysql 库中有一张日报表,表中是本省各地市的一些指标,地市名称使用中文名字表示。

城市 人口
广州市 300
深圳市 400

然后在一个 excel 文件中也有类似的二维表

城市 人口
深圳市
广州市

需要从 mysql 中取出各项指标数据写入到 excel 中,由于 mysql 表中的顺序与 excel 中的顺序是不相同的,于是需要将 mysql 中的数据取出,然后再根据 excel 中第一列的内容与 mysql 中的数据做匹配,得到各项指标,再写入 excel。这里比较方便的做法是先将从 mysql 中取出的数据保存到一个字典中,这个字典以城市名称为键,各指标项的名称和值再组成一个小的字典,做为值,如:

result_dict = {'广州市': {'rk': 300, 'mj': 500}, '深圳市': {'rk': 400, 'mj': 300}}

但是众所周知,在 python2 里面中文处理是有问题的。在我的程序中,得到的字典,其中的键——也就是城市名称全部都变成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')

解决

posted @ 2020-03-05 21:06  东围居士  阅读(816)  评论(0编辑  收藏  举报