Python2中文处理纪要的实现方法

 更新时间:2018年03月10日 10:02:19   作者:俺踏月色而来  
本篇文章主要介绍了Python2中文处理纪要的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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");

嗯,差不多就这些,想到再补充。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • pycharm中创建sql文件及模板的过程

    pycharm中创建sql文件及模板的过程

    很多小伙伴刚开始使用pycharm时发现以前的老员工在使用pycharm创建sql文件时会自带文件头模板,例如时间、作者、版本、邮件等信息,这是怎么做到的呢,一起来看一下吧
    2022-07-07
  • Python 加密与解密小结

    Python 加密与解密小结

    这篇文章主要介绍了Python 加密与解密,使用base64或pycrypto模块需要的朋友可以参考下
    2018-12-12
  • Python pandas对excel的操作实现示例

    Python pandas对excel的操作实现示例

    这篇文章主要介绍了Python pandas对excel的操作实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 利用Python爬取可用的代理IP

    利用Python爬取可用的代理IP

    我们平时在用Python爬虫时,有时会要用到IP代理。网上有很多的免费代理IP网站,但不是所有的ip都能用,所以这篇文章教大家如何爬取可用的代理IP。
    2016-08-08
  • python opencv旋转图像(保持图像不被裁减)

    python opencv旋转图像(保持图像不被裁减)

    这篇文章主要为大家详细介绍了python opencv旋转图像,保持图像不被裁减,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python用模块pytz来转换时区

    Python用模块pytz来转换时区

    在Python中,与时间相关的库有好些,可以帮助我们快速的处理与时间相关的需求和问题。这里想和大家分享一下如何在Python用模块pytz来转换时区。
    2016-08-08
  • Django实现auth模块下的登录注册与注销功能

    Django实现auth模块下的登录注册与注销功能

    这篇文章主要介绍了Django实现auth模块下的登录注册与注销功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python批量修改文本文件内容的方法

    Python批量修改文本文件内容的方法

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下
    2016-04-04
  • python编程项目中线上问题排查与解决

    python编程项目中线上问题排查与解决

    因为业务上的设计存在问题,导致数据库表总是被锁,而且是不定期的锁定,导致服务器运行异常,今天就来跟大家说说该如何避免这种问题
    2021-11-11
  • Django模型验证器介绍与源码分析

    Django模型验证器介绍与源码分析

    这篇文章主要给大家介绍了关于Django模型验证器与源码分析的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论