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使用QRCode模块生成二维码实例详解
Jun 14 Python
Python与R语言的简要对比
Nov 14 Python
Python之reload流程实例代码解析
Jan 29 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
Python 元组操作总结
Sep 18 Python
python线程定时器Timer实现原理解析
Nov 30 Python
python实现堆排序的实例讲解
Feb 21 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 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 数据库树的遍历方法
2009/02/06 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php创建无限级树型菜单
2015/11/05 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
Python中格式化format()方法详解
2017/04/01 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python实现倒计时小工具
2019/07/29 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
const和static readonly区别
2013/05/20 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
初三化学教学反思
2014/01/23 职场文书
个人委托书范本
2014/04/02 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js