如何使用空格作为分隔符正确分割包含具有特殊字符的句子的字符串?使用正则表达式分割方法我无法获得所需的结果.
示例代码:
# -*- coding: utf-8 -*- import re s="La felicità è tutto" # "The happiness is everything" in italian l=re.compile("(\W)").split(s) print " s> "+s print " wordlist> "+str(l) for i in l: print " word> "+i
输出是:
s> La felicità è tutto wordlist> ['La', ' ', 'felicit', '\xc3', '', '\xa0', '', ' ', '', '\xc3', '', '\xa8', '', ' ', 'tutto'] word> La word> word> felicit word> Ã word> word> ? word> word> word> word> Ã word> word> ? word> word> word> tutto
而我正在寻找一个输出:
s> La felicità è tutto wordlist> ['La', ' ', 'felicità', ' ', 'è', ' ', 'tutto'] word> La word> word> felicità word> word> è word> word> tutto
需要注意的是,s是从另一个方法返回的字符串,所以我不能强制编码
s=u"La felicità è tutto"
关于Unicode和reg-ex的官方python文档,我没有找到令人满意的解释.
谢谢.
亚历山德罗
您正则表达式应该(\s)
不是(\W)
这样的:
l = re.compile("(\s)").split(s)
上面的代码将为您提供所需的确切输出.但是以下行更有意义:
l = re.compile("\s").split(s)
它会拆分空白字符,并不会将所有空格作为匹配项.你可能需要它们,所以我发布了两个答案.