python中的unicode

来源:互联网 发布:js contents 编辑:程序博客网 时间:2024/06/06 07:31

今天学Python自然语言处理,遇到处理中文分词各种乱码,下面总结一些经验。我用的是Python2.7。

首先看一行代码

print type("你好"),type(u"你好")

输出:<type'str'> <type 'unicode'>

 

1. unicode是一种编码标准,具体的实现标准可能是utf-8,utf-16,gbk ……

python 在内部使用两个字节来存储一个unicode,使用unicode对象而不是str的好处,就是unicode方便于跨平台。

你可以用如下两种方式定义一个unicode:

s1 = u"你好"s2 = unicode("你好", "utf-8")

一开始我一直以为unicode是一直编码方式。。。小白。。。

 

2. 同时我还遇到了这样的错误

UnicodeEncodeError: 'ascii' codec can'tencode characters in position 0-2: ordinal not in ran

解决办法:

import sysreload(sys)sys.setdefaultencoding('utf-8')

s = "你好"

s.encode('gbk')

因为没有指定defaultencoding,编译器其实在做s.decode('ascii').encode('gbk')

这样s.encode("utf-8")等价于s.decode(defaultencoding).encode("utf-8")。

 

3. 对于list中存的是unicode元素,直接print list输出的是unicode编码,可以加上import uniout解决。

 

以上便是今天遇到一些问题的总结,日后还会继续扩充,有误请指正,大家共同进步!


原创粉丝点击