一. 基本知识
1. 如果py文件里面不指定源文件需要用到的编码格式的话,python解析器就会用默认的编码去解析,一般是ASCII, 所以如果此时源文件有中文的话就会报错,‘SyntaxError: Non-ASCII character......’, 因此一定要显示指定编码格式,方法是在py文件第二行加入此句:' #-*- coding: gbk -*-' , 就指定编码格式为gbk了。当然写法上还可以是满足这样的正则表达式的句子: 'coding[:=]\s*([-\w.]+)'
注意: 一般声明的coding要和文件编码一致,这样最稳妥!
2. python中 s = ‘中文' 和 s = u'中文'的区别:
s = '中文' 要变成python解析器识别的unicode,那就要在运行时才能。因为解析器会在运行时把s变量decode成unicode。
而s = u'中文'则是在编译的时候就变成unicode了,并且会保存在对应的pyc文件中。
所以两者的区别其实就是什么时候变成unicode,而且作为参数传递时有u的直接就是unicode对象了,而没有u的只是python中的普通的str, 需要变成unicode来用时需要调用decode或者unicode函数来处理。两者的联系就是他们的最终结果都是unicode。
3. 文件的编码
3.1 在编码问题中,其实文件本身的编码也是很重要的。如何查看?用vim的话,可以通过在vimrc文件加入'set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1' 来检测文件的编码格式,会按照你列的编码顺序来检测该文件的编码。具体做法是加入那句以后,用vim打开该文件后,用set fileencoding来查看。
3.2 文件的编码其实就决定了你在文件中写一句 s = '中文'的时候,这个s的值是什么编码。也就是说,如果文件编码是gbk,那么s就是gbk编码,你要变成unicode来用就要s.decode('gbk').
4. python文件中的中文有人是建议都用u'xx'的写法变成unicode,然后在需要转换显示的时候才转,我表示同意。
二. python解析源文件的流程
流程图 reference : http://www.python.org/dev/peps/pep-0263/
三. 遇到的问题
遇到的问题的例子比较多,这里不一一列举了,找了几个比较好的参考资料
1. http://zzjjzzgggg.iteye.com/blog/311666
2. http://zzjjzzgggg.iteye.com/blog/309409
3. http://www.iteye.com/topic/560229
4. http://www.iteye.com/topic/699510
5. 用simplejson 来转换数据:
simplejson提供两类API:
1) loads: 将python的object转化成字符串(<type: 'str'>)
2) dumps : 将字符串转化成python的object.
loads明显是有个encode的过程, 那么肯定有个encoding来指定encode时候的编码, 不指定默认是用utf-8的;
同样dumps明显就有个decode过程, 同样有个encoding来指定, 默认也是为utf-8;
以前遇到一个问题是, 通过http接口获取过来的json数据编码是gbk的, 但是我在loads的时候没有指定encoding,
结果出现乱码, 找了很久才发现了问题, 所以我警惕之后调用这2个接口的时候都最好显示指定encoding,这样
虽然麻烦了, 但是对于查找问题和代码可读性方面都是有好处的!
经验是如果遇到编码问题,可以从一下几个方面去思考:
1)文件本身的 编码
2)声明的编码
3)如果数据是从网络获取的或者其他途径,反正就不是自己的,那么建议代码中加入try...except UnicodeEncodeError, UnicodeDecodeError 之类的代码做好防范。
4)建议采用utf-8编码,如果实在是对数据量有要求的可以用gbk,因为小一点。
欢迎拍砖!
- 描述: python 解析器分析编码的流程图
- 大小: 155.2 KB
分享到:
相关推荐
### Python编码总结(编码类型、格式、转码) 在Python编程中,对于字符串的编码处理是必不可少的一个环节。本文将详细介绍Python中的编码操作,包括编码类型、格式、转码等,并通过实例帮助读者理解相关操作技巧及...
### Python编码规范详解(基于Google风格指南) #### 一、概览 Python作为一种广泛使用的高级编程语言,其编码规范对于确保代码的可读性和一致性至关重要。Google作为业界领先的公司之一,发布了一份详细的Python...
"PEP8 Python 编码规范" PEP8 是 Python 官方提供的一份编码规范指南,旨在提高 Python 代码的可读性、可维护性和可重用性。本文档将对 PEP8 中的各种规范进行详细解释和总结。 缩进和换行 PEP8 规定使用 4 个...
### Python编码规范详解 #### 一、概述 Python作为一种广泛使用的高级编程语言,其编码规范对于提高代码可读性、可维护性和团队协作至关重要。本文档基于“python编码规范.txt”这一资料,深入探讨了Python编程的...
Python 期末课程设计报告总结 本文是 Python 期末课程设计报告总结,从技术总结、实现的网络读书网站、书籍下载和书籍阅读系统等多方面进行总结。 技术总结: 本项目使用 Python 作为主要开发语言,Tkinter 库用于...
Python 编码与解码详解 ...总结,Python中的编码和解码是处理字符集的关键,理解和掌握各种编码之间的转换关系,对于编写跨平台、国际化软件至关重要。正确处理编码问题可以避免字符乱码,提高程序的兼容性和稳定性。
### Python开发总结——C程序员的Python之路 #### 引言 随着软件开发领域的不断发展与变化,许多原本专注于C语言的开发者也开始转向学习Python这一高级语言。对于习惯了C语言的程序员而言,掌握Python不仅可以拓宽...
### Python编码风格指南详解 #### 一、Python语言方面的准则 **1.1 Python语言方面的准则** ##### 1.1.1 pychecker Pychecker是一个静态分析工具,用于检查Python代码中的潜在错误。它能够检测出如未定义的变量...
1.2 Python 编码风格方面的准则 2. Python 语言方面的准则 2.1 pychecker 2.2 导入模块和包 2.3 完整路径导入 2.4 异常处理 2.5 全局变量 2.6 内嵌/本地/内部类和函数 2.7 List Comprehensions 2.8 默认迭代器和...
Python 编程规范 Python 编程规范是指编写 Python 代码时...七、总结 Python 编程规范是 Python 开发者必备的知识之一。遵守 Python 编程规范可以提高代码的可读性、可维护性和可重用性,提高开发效率和代码质量。
总结来说,这个大作业涵盖了信息论基础、霍夫曼编码和费诺编码的理论与应用,通过Python编程将这些概念具体化,提供了一个动手实践的机会。通过完成这个项目,不仅可以掌握图像编码的关键技术,还能提升Python编程...
Python编码规范为开发者提供了一套统一的指南,帮助他们编写出更加清晰、易于维护的代码。通过遵循这些规范,不仅可以提升个人的编程技能,还能促进团队间的协作效率。随着项目的不断迭代和演进,这些规范也会不断地...
### Python开发总结知识点 #### 一、推荐书籍与资源 1. **《Python参考手册》** - **主要内容**:本书全面介绍了Python的各种标准模块及其特性。对于希望深入了解Python库和特性的开发者来说,是一本不可或缺的...
参照https://legacy.python.org/dev/peps/pep-0008/官方文档简单总结了python编程过程中应当遵守的编码规范,比如函数的命名、变量的命名等(PEP8编码规范)。
### Python 查看文件的编码格式方法 在处理文本文件时,了解文件的编码格式是非常重要的。这不仅能帮助我们正确地读取文件内容,还能避免因编码不匹配导致的数据损坏或乱码问题。本文将详细介绍如何使用Python来...
PEP8 Python编码规范总结 PEP8 Python编码规范是Python社区中的一份编码规范文档,旨在提高Python代码的可读性、可维护性和一致性。下面是对PEP8 Python编码规范的总结: 代码编排 * 缩进使用4个空格,禁止使用...