我正在尝试将包含瑞典字符的字符串与重新分割,但我不能让代码工作。在
wordsre = re.compile(r"[\WåäöÅÄÖ]+")
mytext = "hej. och gå! Med en #katt som leker 9 liv!"
newtext = wordsre.split(mytext)
输出为:
^{pr2}$编辑:第三个单词应该是“gå”。瑞典字符“å”丢失。在
我在Mac OS X Mavericks上,在终端(Bash)输出中使用Python3.4和“locale”:
LANG="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_CTYPE="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_ALL=
我在Ubuntu论坛上找到了这个帖子,但是我不明白为什么它对我不起作用,尽管语言环境是正确的。在
小字体:使用
\w
,而不是\W
这将起作用:
在Python中:
^{pr2}$输出:
说明
\W
匹配不是字母、数字或下划线的字符,这与我们想要匹配单词的内容相反\w
匹配ASCII字母、数字或下划线(除非如@MartijnPieters指出,您使用re.UNICODE
选项)\w
匹配unicode字母、象形文字、数字或下划线(除非,正如@MartijnPieters所指出的那样,您使用re.ASCII
选项),这样重音字母就不需要了(\w+
就足够了)从索引1中获取匹配的组
Live DEMO
或者试试看
^{pr2}$Live DEMO
根据您的预期输出使用下面的正则表达式,排除空格,点,哈希和解释符号。在
Live DEMO
样本代码:
在要分割的字符中包含
å
。看来你误解了分割的作用。在re.split()
将在匹配characters类的任何内容上拆分单词;在您的例子中,这意味着任何\W
匹配(任何不是字母、数字或_
)的内容,并将字符åÅäÄöÖ
添加到该集合中。在如果不想拆分这些字符,请省略这些字符:
{3}不是正则表达式的一部分。在
演示:
^{pr2}$由于},使用{}模式提取单词,而不是删除非单词字符:
\w
是\W
的反义词,您也可以使用re.findall()
代替{另一个好处是现在没有尾随的空字符串。在
同样,当使用Unicode模式时,所有字母都包括在内,字符集不仅仅限于ASCII字母字符。在
相关问题 更多 >
编程相关推荐