因工作需要,要查找中文汉字分词,因为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转换的时候会报错。