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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python程序设计入门(3)数组的使用
Jun 16 Python
Python创建系统目录的方法
Mar 11 Python
介绍Python的Urllib库的一些高级用法
Apr 30 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
Python删除windows垃圾文件的方法
Jul 14 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
python实现简单淘宝秒杀功能
May 03 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
Python和Sublime整合过程图示
Dec 25 Python
Python递归及尾递归优化操作实例分析
Feb 01 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中json_encode()和json_decode()
2014/05/25 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
python3 logging日志封装实例
2020/04/08 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
Java面试题汇总
2015/12/06 面试题
初婚初育证明
2014/01/14 职场文书
工人先锋号申报材料
2014/12/29 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
vue3不同环境下实现配置代理
2022/05/25 Vue.js