python分割字符串中文_python 分割中文英文混合字符串的正确方法

时间:2025-03-28 08:14:16

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