文档详情

python的中文处理.pdf

发布:2015-09-25约8.8千字共6页下载文档
文本预览下载声明
Python 的中文处理 一、使用中文字符 在 python 源码中如果使用了中文字符,运行时会有错误,解决的办法是在源码的开头 部分加入字符编码的声明,下面是一个例子: #!/usr/bin/env python # -*- coding: cp936 -*- Python Tutorial 中指出,python 的源文件可以编码ASCII 以外的字符集,最好的做法是 在#!行后面用一个特殊的注释行来定义字符集: # -*- coding: encoding -*- 根据这个声明,Python 会尝试将文件中的字符编码转为 encoding 编码,并且,它尽可能的 将指定地编码直接写成 Unicode 文本。 注意,coding:encoding 只是告诉 Python 文件使用了 encoding 格式的编码,但是编辑器 可能会以自己的方式存储.py 文件,因此最后文件保存的时候还需要编码中选指定的 ecoding 才行。 二、中文字符的存储 str = u 中文 str u\xd6\xd0\xce\xc4 str = 中文 str \xd6\xd0\xce\xc4 u 中文只是声明 unicode ,实际的编码并没有变。这样子就发生变化了: str = 中文 str \xd6\xd0\xce\xc4 str = str.decode(gb2312) str u\u4e2d\u6587 更进一步: s = 中文 s.decode(gb2312) u\u4e2d\u6587 len(s) 4 len(s.decode(gb2312)) 2 s = u 中文 1 len(s) 4 s = 中文test len(s) 8 len(s.decode(gb2312)) 6 s = 中文test , len(s) 10 len(s.decode(gb2312)) 7 可以看出,对于实际 Non-ASCII 编码存储的字符串,python 可以正确的识别出其中的 中文字符以及中文上下文中的标点符号。 前缀“u ”表示“后面这个字符串“是一个Unicode 字符串”,这仅仅是一个声明,并不 表示这个字符串就真的是 Unicode 了;就好比某正太声称自己已满 18 岁,但实际上他的真 实年龄并不确定,现在体育界年龄造假可不稀罕幺! 那么声明成 u 有什么作用呢?对于 Python 来说,只要你声明某字符串是 Unicode ,它就 会用 Unicode 的一套机制对它进行处理。比方说,做字符串操作的时候会动用到内部的 Unicode 处理函数,保存的时候以 Unicode 字符(双字节)进行保存。等等。显而易见,对 于一个实际上并不是 Unicode 的字符串,做 Unicode 动作的处理,是有可能会出问题的。u 前缀只适用于你的字符串常量真的是Unicode 的情况。 三、中文字符的 IO 操作 用 python 处理字符串很容易,但是在处理中文的时候需要注意一些问题。比如: a = 我们是 python 爱好者 print a[0] 只能输出“我”字的前半部分,要想输出整个的“我”字还需要: b = a[0:2] print b 才行,很不方便,并且当一段文本中同时有中英文如何处理?最好的办法就是转换为 unicode 。像这样:
显示全部
相似文档