我以为我也会展示正则表达式方法.这对我来说不合适,但这主要是因为我所看到的所有语言特定的i18n奇怪让我担心正则表达式可能对所有这些都不够灵活 – 但你可能根本不需要任何那个. (换句话说 – 过度设计.)
# -*- coding: utf-8 -*-
import re
def group_words(s):
regex = []
# Match a whole word:
regex += [ur'\w+']
# Match a single CJK character:
regex += [ur'[\u4e00-\ufaff]']
# Match one of anything else, except for spaces:
regex += [ur'[^\s]']
regex = "|".join(regex)
r = re.compile(regex)
return r.findall(s)
if __name__ == "__main__":
print group_words(u"Testing English text")
print group_words(u"我爱蟒蛇")
print group_words(u"Testing English text我爱蟒蛇")
在实践中,您可能只想编译一次正则表达式,而不是每次调用.再次,填写字符分组的细节取决于您.