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中的下划线详解
Jun 24 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python的re模块正则表达式操作
May 25 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
Python实现的rsa加密算法详解
Jan 24 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
基于django 的orm中非主键自增的实现方式
May 18 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 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(视频)Http下载
2006/12/12 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
PHP防止跨域提交表单
2013/11/01 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
深入理解python中的select模块
2017/04/23 Python
解决yum对python依赖版本问题
2019/07/05 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
我为自己代言广告词
2014/03/18 职场文书
民事起诉状范文
2015/05/19 职场文书
运动会100米广播稿
2015/08/19 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python