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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
Python中的高级数据结构详解
Mar 27 Python
json跨域调用python的方法详解
Jan 11 Python
对Python中数组的几种使用方法总结
Jun 28 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
详解如何减少python内存的消耗
Aug 09 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
Python延迟绑定问题原理及解决方案
Aug 04 Python
python获取字符串中的email
Mar 31 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
php学习之数据类型之间的转换介绍
2011/06/09 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
php的socket编程详解
2016/11/20 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
python实现自动更换ip的方法
2015/05/05 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python邮件发送smtplib使用详解
2020/06/16 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
求职信模板
2014/05/23 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
应用心理学专业求职信
2014/08/04 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏