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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏py+selenium

python如何将一个多位数数值转换为列表类型

814
来自专栏Pythonista

python全栈考试

a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!

662
来自专栏安恒网络空间安全讲武堂

Python编写渗透工具学习笔记一 | 0x08字典生成程序

0x08字典生成程序 这里主要用到了exrex模块,这个模块的主要功能是: 生成所有匹配的字符串 生成随机匹配的字符串 计算匹配字符串的数量 简化正则表达式 这...

2349
来自专栏java闲聊

Shell入门

a. 单引号(括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释)

1134
来自专栏用户2442861的专栏

linux sed命令使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

582
来自专栏xcywt

《Linux命令行与shell脚本编程大全》第二十一章 sed进阶

本章介绍一些sed编辑器提供的高级特性。 21.1 多行命令 按照之前的知识,所有的sed编辑器命令都是针对单行数据执行操作的。 在sed编辑器读取数据流时,它...

1819
来自专栏诸葛青云的专栏

教你彻底学会c语言基础——文件操作

函数定义:FILE *fopen(char *pname, char *mode)

702
来自专栏王磊的博客

web.config中配置字符串中特殊字符的处理

配置文件中往往要用到一些特殊的字符,                Web.Config默认编码格式为UTF-8,对于XML文件,要用到实体转义码来替换。对应...

3274
来自专栏JetpropelledSnake

Python入门之用Python统计代码行

Pycharm每天都要写很多代码,如何统计每天的代码行数呢?作为一个目标十万行的coder,要想想办法! 题目:有个目录,里面是你自己写过的程序,统计一下你写过...

2988
来自专栏MasiMaro 的技术博文

PE文件详解(七)

本文转载自小甲鱼PE文件讲解系列原文传送门 这次主要说明导出表,导出表一般记录着文件中函数的地址等相关信息,供其他程序调用,常见的.exe文件中一般不存在导...

881

扫码关注云+社区