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实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
Python复数属性和方法运算操作示例
Jul 21 Python
人工智能最火编程语言 Python大战Java!
Nov 13 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
Python Socket编程详解
Apr 25 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+jQuery实现自动补全功能源码
2013/05/15 PHP
php获取字段名示例分享
2014/03/03 PHP
php微信公众平台开发类实例
2015/04/01 PHP
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
列举Python中吸引人的一些特性
2015/04/09 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python多项式回归的实现方法
2019/03/11 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
python中怎么表示空值
2020/06/19 Python
如何使用Pytorch搭建模型
2020/10/26 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers