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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
浅谈Python中的数据类型
May 05 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
深入理解python函数递归和生成器
Jun 06 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
学习php笔记 字符串处理
2010/10/19 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
原生js生成图片验证码
2020/10/11 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
Python3几个常见问题的处理方法
2019/02/26 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
Delphi笔试题
2016/11/14 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
推荐信怎么写
2014/05/09 职场文书
校长师德表现自我评价
2015/03/05 职场文书
秋菊打官司观后感
2015/06/03 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js