(转)Unicode和Python的中文处理
——由于最近在做有关网页搜索的项目,涉及到一些编码方面的知识,小弟在网上偶然地发现了这么一篇文章,很易懂,不晦涩,为了方便自己也同时能方便大家,就转了过来,以作参考……
文章出处:http://blog.csdn.net/tingsking18/archive/2009/04/03/4033645.aspx
Unicode和Python的中文处理
在Python语言中,Uincode字符串处理一直是一个容易让人迷惑的问题。许多Python
爱好者经常因为搞不清Unicode、UTF-8还有其它许许多多的编码之间的区别而大伤脑筋。
笔者曾经也是这“伤脑筋一族”的成员,但经过半年多的努力,现在终于初步弄清楚其中
的一些关系。现将其整理如下,与各位同仁同享。同时也希望能借这篇短文抛砖引玉,吸
引更多真正的高手加入进来,共同完善我们的Python中文环境。
本文所提到的各种观点,一部分是查阅资料所得,还有一部分是笔者利用已有各种编
码数据用“猜测加验证”法得到。笔者自问才疏学浅,其中怕是藏有不少错误。各位看官
中不乏高手,如果有哪一位发现其中哪里有错,万望各位高人不吝赐教。笔者自己丢丑事
小,观点错误误了别人事大,因此各位大可不必顾忌笔者的面子问题。
第一节 文字编码和Unicode标准
要解释Unicode字符串就必须先从什么是Unicode编码开始说起。众所周知,文本显示
一直是计算机显示功能必须解决的基本问题。而计算机并不识字,它实际上是把文本看做
是一串“图片”,每张“图片”对应一个字符。每个计算机程序在显示文本时,必须借助
一个记录这个文字“图片”如何显示的“图片”集合,从中找到每一个字符对应“图片”
的数据,并依样画葫芦地把这个字“画”到屏幕上。这个“图片”就被称为“字模”,而
记录字模显示数据的集合就被称为“字符集”。为方便程序查找,每个字符的字模数据在
字符集中必须是有序排列的,而且每个字符都会被分配一个独一无二的ID,这个ID就是字
符的编码。而在计算机进行字符数据处理时,总是用这个编码代表它表示的那个字符。因
此,一个字符集就规定了一组计算机能够处理的字符数据。显然,不同国家指定的字符集
大小不同,相应的字符编码也不同。
在计算机历史上,最为广泛使用的标准化字符集当首推ASCII字符集。它
相关文档:
# 027
toolName = 'Google'
if toolName.startswith('Go'):
print 'The tool\'s name starts with \"Go\".'
if 'oo' in toolName:
print 'The tool\'s name contains the stirng "oo".'
print toolName.find('gl') # 返回首次出现“gl”字符串的索引
if toolName.find('Baidu ......
源代码下载:下载地址在这里
# 029
aFile = file(r'C:\in.txt', 'r')
while True:
line = aFile.readline()
if len(line) == 0:
break
# end of if
print line,
# end of while
aFile.close()
output:
>>>
This is the first line.
This is the second line.
This is ......
源代码下载:下载地址在这里
e.g.1
# 030
aFile = file(r'C:\temp.txt', 'a')
aFile.write('又添加了一行。')
aFile.close()
output:
e.g.2
# 030
aFile = file(r'C:\temp.txt', 'a')
aFile.write('又添加了一行。')
aFile.close()
output:
e.g.3
实现根据原始文件有没有最后一行空行的情况来进行&ldqu ......
# 040
import time
try:
f = file('040_Finally.py')
while True:
line = f.readline()
if len(line) == 0:
break
time.sleep(0.33)
print line,
# end of while
finally:
f.close()
print 'Closed the file.'
# end of try
output:
> ......