Python中的中文处理方式

1. python下默认的编码方式是ASCII编码,如果是对中文进行处理就要采用其他的编码方式例如utf-8,这一般会在代码的第二行指定。

2. python内部使用的是Unicode编码,所以如果涉及到搜索匹配判断中文字符串时要转换成unicode编码形式

     print type('你好')   这个会打印出来是‘str’类型

     print type(u'你好')  打印出来是unicode类型

     用repr()可以看到这两种情况下的输出,print repr('你好')   会输出'\xe4\xbd\xa0\xe5\xa5\xbd',这个是utf-8编码;print repr(u'你好') 输出的是u'\u4f60\u597d'。 

      由于python内部只能处理unicode编码,所以如果操作中文字符串时如果不转换成unicode编码那么会遇到问题,例如下面代码并不能输出想要的'你好',这是因为s和t全部都是utf-8编码,遍历的时候也是按照utf-8编码中的元素进行      

#!/usr/bin/python
#coding= utf-8

s = '你好世界'
t = '你好宇宙'

for i in s:
    for l in t:
        if i==l:
            print i

所以我们必须要转换成unicode编码形式,我们可以直接在中文字符串前面加u来表示当前是以unicode编码保存,也可以采用decode()函数进行转换,decode的作用解码成unicode编码,相反encode的作用是编码成相应的格式。即:

s = u'你好世界'

t = u'你好宇宙'

或者改为

s = '你好世界'.decode('utf-8')

t = '你好宇宙'.decode('utf-8')

2. 当对txt文档进行操作时,需要注意的是  当读入时要解码成unicode格式,保存的时候再转换成utf-8编码。raw_input()函数输入的中文字符串是utf-8编码

#!/usr/bin/python
#coding:utf-8
s = raw_input()

s = s.decode('utf-8')
f = open("test.txt","w")
f.write(s.encode('utf-8')+'\n')
f.write(s.encode('utf-8')+'\n')
f.close()

  

3. 查看一个文件的编码方式

     

#!/usr/bin/python
#coding= utf-8

import chardet
fd = open("chinese_test.txt","r")
s = fd.readline()
print chardet.detect(s)
fd.close()

输出为{'confidence': 1.0, 'language': '', 'encoding': 'UTF-8-SIG'}


版权声明:本文为yangjingdong2008原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。