Python2中文处理纪要的实现方法


Posted in Python onMarch 10, 2018

python2不是以unicode作为基本代码字符类型,碰到乱码的几率是远远高于python3,但即便如此,相信很多人,也不想随意的迁移到python3,这里就总结几个我平常碰到的问题及解法。

1、文件中无法使用中文注释

处理方法:

在代码中增加 # -*- coding=UTF-8 -*- ,一般加在文件头部第一行,如果第一行是脚本标志,则放在第二行(实际仍然是python正本的第一行)。

随后将文件另存为UTF-8格式。

此方法可以解决注释中有中文,及字符串立即数中包含中文的问题。

2、unicode中文变量打印出来是乱码

处理方法:

文件开始引入扩展库的部分加入以下3行代码。

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

3、utf-8 及 gbk互相转换

直接看代码:

#utf-8字符串转换成GBK(GB2312及其它编码也是这样用)
print str.decode('UTF-8').encode('GBK')
#gbk转换成utf-8
print str.decode('GBK').encode('UTF-8')

4、参数中的utf-8是用大写还是小写?

通常大小写都可以,这不是python决定的,是系统的语言代码设定决定的。

5、打开utf-8的文本文件

经过1、2的设置,正常直接打开就可以,文件是什么编码,读出来就是什么编码,个别仍有不行的可以使用扩展库codecs:

import codecs
...
with codecs.open(poetry_file, "r","utf-8") as f:

6、print打印出来的结构中的汉字是乱码

print仅打印一个utf-8的变量是不会有问题的,比如

a="汉字"
print a
#会正常显示

但是如果用了接续显示,比如:

print a,
#将会显示乱码

如果是其它结构,诸如dict / list / class等,都会出现乱码。

a = ["中文","测试"]
print a
#将会显示乱码

这种情况使用基本库没有什么好办法,只能循环逐个打印内容,比如:

...
for item in items:
print item

或者整合输出,比如: print ', '.join(a)

还可以使用第三方的包,比如:

import uniout
...
listnine = ['梨', '橘子', '苹果', '香蕉']
print 'listnine list: %s' % listnine

7、变量本身显示正常,循环遍历出来的单个字符乱码

大多情况是因为字符串不是unicode编码。声明字符串的时候使用 a = u'汉字' 这样方式赋值的变量都是Unicode字符串,不会有问题。

如果是从外部传入的变量,源头情况又不知道,可以尝试转换成Unicode字符串:

str=unicode(str,"utf-8");

嗯,差不多就这些,想到再补充。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
Django自定义分页效果
Jun 27 Python
详解Python之unittest单元测试代码
Jan 24 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
对python产生随机的二维数组实例详解
Dec 13 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python如何停止递归
Sep 09 Python
Python中with上下文管理协议的作用及用法
Mar 18 Python
python实现冒泡排序算法的两种方法
Mar 10 #Python
Python使用pyh生成HTML文档的方法示例
Mar 10 #Python
tensorflow获取变量维度信息
Mar 10 #Python
TensorFlow变量管理详解
Mar 10 #Python
TensorFlow神经网络优化策略学习
Mar 09 #Python
TensorFlow实现AutoEncoder自编码器
Mar 09 #Python
TensorFlow实现MLP多层感知机模型
Mar 09 #Python
You might like
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php中filter_input函数用法分析
2014/11/15 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
动手学习无线电
2021/03/10 无线电
优化javascript的执行速度
2010/01/23 Javascript
js+css在交互上的应用
2010/07/18 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
优秀党员主要事迹
2014/01/19 职场文书
婚前财产公证书
2014/04/10 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
嘉宾邀请函
2015/01/31 职场文书