今天在写代码的时候遇上了中文编码报错的问题,ASCII和Unicode转化的问题,报错如下:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

每次遇上中文都感觉头大,这次由于需要使用中文来作为键值所以必须解决好这个问题,同样的汉字使用utf-8编码之后变为:
如:武汉------>u'\u6b66\u6c49'
       可是做键的时候就变成了:'\xe6\xad\xa6\xe6\xb1\x89'
     实在是不知道怎么回事,后来找到了解决办法就是使用字符串编码检测方法找到字符串的编码方式,然后使用该编码方式来编码即可,具体实现如下:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:中文编码问题
'''import xlrd
import chardetdef create_huoche_station_dict(data='china_station_names.xls'):'''创建:站名--字母简称字典'''station_name_dict={}content=xlrd.open_workbook(data)table=content.sheets()[0] nrows=table.nrows #行数ncols=table.ncols #列数for i in range(1,nrows):row=table.row_values(i)if row:station_name_dict[row[1]]=row[-1]return station_name_dictif __name__ == '__main__':station_name_dict=create_huoche_station_dict(data='data/xidu/china_station_names.xls')station_list=["武汉","青岛北","北京西","菏泽","郑州东","哈尔滨西","重庆北","广州东","大同","新乡","拉萨","上海","兰州","桂林","洛阳","泰安","威海","烟台","济南西","沈阳北","长春","长沙","福州","偃师","成都"]for one in station_list:JX=station_name_dict[unicode(one,chardet.detect(one)['encoding'])]print '{0}车站简写为:{1}'.format(one,JX)

结果如下:

武汉车站简写为:WHA
青岛北车站简写为:QDB
北京西车站简写为:BJX
菏泽车站简写为:HZE
郑州东车站简写为:ZZD
哈尔滨西车站简写为:HEX
重庆北车站简写为:CQB
广州东车站简写为:GZD
大同车站简写为:DTO
新乡车站简写为:XXI
拉萨车站简写为:LSA
上海车站简写为:SHA
兰州车站简写为:LZH
桂林车站简写为:GLI
洛阳车站简写为:LYA
泰安车站简写为:TAN
威海车站简写为:WHA
烟台车站简写为:YTA
济南西车站简写为:JNX
沈阳北车站简写为:SYB
长春车站简写为:CCH
长沙车站简写为:CSH
福州车站简写为:FZH
偃师车站简写为:YSH
成都车站简写为:CDU
[Finished in 0.5s]

Python简单的小实验输出对应车站的中文简写(主要是为了解决汉字编码问题)相关推荐

  1. python基础代码事例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  2. python程序实例教程基础-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  3. python经典程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  4. python简单程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  5. java基础代码实例_全网都在找的Python简单基础小程序的实例代码

    这篇文章主要介绍了Python简单基础小程序的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下. 1 九九乘法表 3 4 5 6 7for i in range(9):#从0循环到8 ...

  6. python基础编程:Python简单基础小程序的实例代码

    这篇文章主要介绍了Python简单基础小程序的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下 1 九九乘法表 for i in range(9):#从0循环到8i += 1#等价于 ...

  7. Python简单换脸程序改进输出图片

    Python简单换脸程序改进输出图片 环境 需要的模型 代码 总结 环境 windows 10 64位 Python 3.6 PyCharm 社区版 dlib 19.6.1 numpy 1.15.4 ...

  8. Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)

    Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...

  9. python简单的小程序_Python简单小程序---名片简易系统

    Python简单小程序---名片简易系统 主程序功能代码 import cards_tools while True: cards_tools.show_meun() action = int(inp ...

  10. Python简单龟兔赛跑小游戏

    Python实现简单的龟兔赛跑小游戏 基于CSS 和 js的基础之上实现: 具体代码如下>>: HTML代码文件 <!DOCTYPE html> <html>< ...

最新文章

  1. Ocelot + Consul实践
  2. asp.net 创建文件夹时出错:未找到路径“D:\”的一部分。(asp.net 使用 FSO)
  3. monty python flying circus-巨蟒剧团之飞翔的马戏团 第1季
  4. 拍照时不会摆Pose怎么办?
  5. IE6使用png透明图片的方法
  6. /dev 设备文件属性解读
  7. python面向对象进阶
  8. vue --- 前端代理发送http请求
  9. python类实例覆盖_避免类实例覆盖默认值
  10. 资源放送丨《 Kubernetes Operator 开发范式》PPT视频
  11. TextBox只输入数字
  12. spring5.0学习笔记3
  13. Android 使用反射调用StorageManager中 Hide方法getVolumeList、getVolumeState
  14. WiFi管理帧(四)(TWT)
  15. Eclipse常用快捷键
  16. 1788 数量的类模板
  17. phpinfo()函数 写法
  18. bootstrap实战--微金所项目(导航栏)
  19. python使用for循环输出0~10之间的整数_用Python编写一个程序,使用for循环输出0~10之间的整数...
  20. PIX Moving x 宝马 | DIGITAL PLANT

热门文章

  1. Python之路(第十四篇)os模块
  2. 软件吞噬世界之前 SDS还要解决这些问题
  3. SharePoint 2013 添加Ribbon菜单
  4. MATLAB注释快捷键、绘图选项
  5. IIS8,OUTLOOK OWA 2013鉴赏
  6. DB2创建数据库示例
  7. 使用java连接mysql数据库
  8. SpringCloud微服务(01):Eureka组件,管理服务注册与发现
  9. 为什么静态方法中不可以直接访问非静态方法?
  10. row_number()分页返回结果顺序不确定