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 相关文章推荐
让python的Cookie.py模块支持冒号做key的方法
Dec 28 Python
wxPython中文教程入门实例
Jun 09 Python
Python中__init__和__new__的区别详解
Jul 09 Python
Python中转换角度为弧度的radians()方法
May 18 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
python实现求特征选择的信息增益
Dec 18 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
python 如何设置守护进程
Oct 29 Python
Python 统计序列中元素的出现频度
Apr 26 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
PHP入门
2006/10/09 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
js中this对象用法分析
2018/01/05 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
python正则实现计算器功能
2017/12/14 Python
Python解决八皇后问题示例
2018/04/22 Python
python实现电子书翻页小程序
2019/07/23 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python实现扫雷游戏
2020/03/03 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
银行自荐信范文
2013/10/07 职场文书
校企合作协议书
2014/04/16 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
JavaScript函数柯里化
2021/11/07 Javascript