场景是这样的:
在 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进制表示的值了。比如“广州市”变成了 xe5xb9xbfxe5xb7x9exe5xb8x82
此外,需要先读出 excel 中第一列的城市名,再从这个得到的字典中取得各项指标值,读 excel 使用的是 openpyxl,经过多方测试,发现读进来的城市名变成了 u'u5e7fu5ddeu5e02'
这就坑了
最终我的办法是将从 excel 中读出来的城市名进行 encode
# m = u'u5e7fu5ddeu5e02'
m.encode('utf-8')
解决