Alex-Zeng

因工作需要,要查找中文汉字分词,因为python正则表达式\W+表示的是所有的中文字就连标点符号都包括。所以要想办法过滤掉。

参考博客:http://log.medcl.net/item/2011/03/the-chinese-deal-is-the-python/

1.匹配中文时,正则表达式规则和目标字串的编码格式必须相同

    print sys.getdefaultencoding()
    text =u"#who#helloworld#a中文x#"
    print isinstance(text,unicode)
    print text

UnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xe4 in position 18: ordinal not in range(128)

print text报错
解释:控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
改成 print(word.encode(\'utf8\'))即可

2.//确定系统默认编码
import sys
print sys.getdefaultencoding()

3.//判断字符类型是否unicode
print isinstance(text,unicode)

4.unicode\python字符互转

# -*- coding: utf-8 -*-
unistr= u\'a\';
pystr=unistr.encode(\'utf8\')
unistr2=unicode(pystr,\'utf8\')


#需要unicode的环境
if not isinstance(input,unicode):
    temp=unicode(input,\'utf8\')
else:
    temp=input

#需要pythonstr的环境
if isinstance(input,unicode):
    temp2=input.encode(\'utf8\')
else:
    temp2=input

经实验如果脚本的# -*- coding: utf-8 -*- 设置为GBK用unicode转换的时候会报错。
 

分类:

技术点:

相关文章: