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 解析XML文件
Apr 15 Python
python基础教程之元组操作使用详解
Mar 25 Python
wxPython学习之主框架实例
Sep 28 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
python中学习K-Means和图片压缩
Nov 20 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
python如何求解两数的最大公约数
Sep 27 Python
Python Flask框架扩展操作示例
May 03 Python
Python实现京东秒杀功能代码
May 16 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 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异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP7 其他修改
2021/03/09 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JS 强制设为首页的代码
2009/01/31 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
vue数据双向绑定的注意点
2017/06/23 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python WEB应用部署的实现方法
2019/01/02 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
使用python绘制二维图形示例
2019/11/22 Python
Django choices下拉列表绑定实例
2020/03/13 Python
python drf各类组件的用法和作用
2021/01/12 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
航空大学应届生求职信
2013/11/10 职场文书
信息总监管理职责范本
2014/03/08 职场文书
房产公证委托书范本
2014/09/20 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL