gpt4 book ai didi

在 Mac OS X 终端中使用 ÅÄÖ (utf-8) 的 Python 正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:41 25 4
gpt4 key购买 nike

我正在尝试使用 re.split 拆分包含瑞典字符的字符串,但我无法使代码正常工作。

wordsre = re.compile(r"[\WåäöÅÄÖ]+")
mytext = "hej. och gå! Med en #katt som leker 9 liv!"
newtext = wordsre.split(mytext)

输出是:

['hej', 'och', 'g', 'Med', 'en', 'katt', 'som', 'leker', '9', 'liv', '']  

编辑:第三个词应该是“gå”。缺少瑞典语字符“å”。

我在 Mac OS X Mavericks 上,在终端 (Bash) 输出中使用 Python 3.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 论坛上找到了这个帖子,但我不明白为什么它对我不起作用,尽管语言环境是正确的。

http://ubuntuforums.org/showthread.php?t=1534940

最佳答案

您在要拆分的字符中包括 å。看来您误解了拆分的作用<​​em>。

re.split() 将拆分任何匹配字符类的单词;在你的情况下,这意味着任何 \W 匹配(任何 不是 字母、数字或 _),并且你添加了字符 åÅääÄöÖ 到那个集合。

省略如果您不希望这些字符被拆分:

wordsre = re.compile(r"\W+")

在 Unicode 正则表达式中,它们不是 \W 字符集的一部分。

演示:

>>> import re
>>> mytext = "hej. och gå! Med en #katt som leker 9 liv!"
>>> wordsre = re.compile(r"\W+")
>>> wordsre.split(mytext)
['hej', 'och', 'gå', 'Med', 'en', 'katt', 'som', 'leker', '9', 'liv', '']

由于 \w\W 的反函数,您也可以使用 re.findall() 代替 re。 split(),使用 \w 模式提取单词而不是删除非单词字符:

>>> re.findall(r'\w+', mytext)
['hej', 'och', 'gå', 'Med', 'en', 'katt', 'som', 'leker', '9', 'liv']

现在没有尾随空字符串了。

同样,当使用 Unicode 模式时,所有 字母都包括在内,字符集不仅限于 ASCII 字母字符。

关于在 Mac OS X 终端中使用 ÅÄÖ (utf-8) 的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com