GreyZhang/python_basic: My learning notes about python. ()

    曾经在很长的一段时间内,Python处理中文的时候真是把我难坏了。总觉得使用Python处理中文或者是unicode那真叫一个愁!网络上找来的各种教程看来看去看不明白,网络上搜出来的各种代码试来试去试不出来。可现实中的汉字处理却是多的实在是不可避免。最初我自己的解决方案是遇到需要处理汉字的情况立马转战Perl或者MATLAB,在Perl以及MATLAB的世界中一切还不算是那么困难。

    其实,我需要处理的汉字就是那么几种情况,说起来也没有什么难以概述的。大致的工作不外乎如下:

    1,把汉字写入到文件里

    2,把文件中的汉字读取出来

    相信上面两个实现了一切基本上就没有困难了,毕竟在解析器里输出一个汉字还是简单的。

    下面也不解释什么unicode了,没有什么高大上,也说不上什么精深。我自己处理这些只能是经验谈。

实践1:把汉字写入到文件

代码:

#!/usr/bin/python
# -*- coding: cp936 -*-
fid = open('t1.txt','w')
fid.write('中文\n')
fid.close()

    执行上面的代码,在当前的目录中会生成一个文件名为“t1.txt”的文件,里面的信息自然是“中文”。

    总结相应的注意点:第一,加上# -*- coding: cp936 -*-指明编码;第二,中文的字符串按照一般的字符串格式来写不能够写成u'****'的形式。
实践2:把t2.txt中的文字读出来屏显,文件中的文字为“中华人民共和国”

代码:

#!/usr/bin/python
# -*- coding: cp936 -*-
fid = open('t2.txt','r')
text = fid.read()
fid.close()
print text
print type(text)

    执行上面的代码,结果显示如下:

>>>

中华人民共和国

<type 'str'>

    个人的实践经验:第二行不是必须的。但是处理这种信息的时候加上也没有什么影响。而中文从文件中读取出来的数据类型也是一个普通的字符串。

再附加两个Excel表格处理的例子:

实践3:电子表格的写入

代码:

#!/usr/bin/python
# -*- coding: cp936 -*-
from xlwt import Workbook
book = Workbook()
sheet = book.add_sheet('test')
for num in range(10):
    sheet.write(num,0,num)
    sheet.write(num,1,(u"测试" + str(num)))
book.save('t3.xls')

    在生成的电子表格中写入了10行2列,第一列是0-10数字,第二列是测试+行号的汉字与数字组合。编码要点:第一,代码的第二行必须;第二,汉字必须写成u"***"的形式。

实践4:读取实践3中的Excel并且屏显。

代码:

#!/usr/bin/python
# -*- coding: cp936 -*-
from xlrd import open_workbook
book = open_workbook('t3.xls')
sheet = book.sheet_by_index(0)
print "sheet name is: ",
for num in range(sheet.nrows):
    print "Line ",num + 1," : ",sheet.cell(num,0).value,'   ',
    print sheet.cell(num,1).value
代码执行的结果如下:
sheet name is:  test
Line  1  :  0.0     测试0
Line  2  :  1.0     测试1
Line  3  :  2.0     测试2
Line  4  :  3.0     测试3
Line  5  :  4.0     测试4
Line  6  :  5.0     测试5
Line  7  :  6.0     测试6
Line  8  :  7.0     测试7
Line  9  :  8.0     测试8
Line  10  :  9.0     测试9