python 里的字符编码不统一导致中英文的处理有不同的结果,下面介绍中文英文混合字符串 split 的方法。
分割词
#!/usr/bin/env python
# -*- coding: utf-8 -*-
s = '我爱北京*python'
s2 = ''
if not isinstance(s, unicode):
s2 = s.decode("utf-8")
slist = []
keys = []
for i in s2:
print i
(i)
key = '%X' % ord(i)
(key)
print len(slist)
print slist
print len(keys)
print keys
# =====================
s = u'我爱北京*python'
slist = []
keys = []
for i in s:
if not isinstance(i, unicode):
i = ("utf-8")
print i
(i)
key = '%X' % ord(i)
(key)
print len(slist)
print slist
print len(keys)
print keys
用正则
import re
s = 'hi新手oh'.decode('utf-8') #举个栗子是字符串s,为了匹配下文的unicode形式,所以需要解码
p = (ur'[\u4e00-\u9fa5]') #这里是精髓,[\u4e00-\u9fa5]是匹配所有中文的正则,因为是unicode形式,所以也要转为ur
print (s) #使用re库的split切割
稍复杂的分切
中文按字断开,英文按单词分开,数字按空格等特殊符号断开
import re
def get_word_list(s1):
# 把句子按字分开,中文按字分,英文按单词,数字按空格
regEx = ('[\\W]*') # 我们可以使用正则表达式来切分句子,切分的规则是除单词,数字外的任意字符串
res = (r"([\u4e00-\u9fa5])") # [\u4e00-\u9fa5]中文范围
p1 = (())
str1_list = []
for str in p1:
if (str) == None:
str1_list.append(str)
else:
ret = (str)
for ch in ret:
str1_list.append(ch)
list_word1 = [w for w in str1_list if len(()) > 0] # 去掉为空的字符
return list_word1