如何在正则表达式中包含重音词

2024-06-29 01:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个utf-8文本,文本中有大写单词:

La cinta, que hoy se estrena en nuestro país, competirá contra Hors la
Loi, de Argelia, Dogtooth, de Grecia, Incendies, de Canadá, Life above
all , de Sudáfrica, y con la ganadora del Globo de Oro, In A Better
World, de Dinamarca.

所需的输出是将所有以大写字母开头的单词替换为占位符(即#NE#),但第一个单词除外。因此,期望输出如下:

^{pr2}$

我尝试使用regex如下:

>>> import re
>>> def blind_CAPS_without_first_word(text):
...     first_word, _, the_rest = text.partition(' ')
...     blinded = re.sub('(?:[A-Z][\w]+\s*)', ' #NE# ', the_rest)
...     return " ".join([first_word, blinded])
... 
>>> text = "La cinta, que hoy se estrena en nuestro país, competirá contra Hors la Loi, de Argelia, Dogtooth, de Grecia, Incendies, de Canadá, Life above all , de Sudáfrica, y con la ganadora del Globo de Oro, In A Better World, de Dinamarca."
>>> blind_CAPS_without_first_word(text)

[出来]:

La cinta, que hoy se estrena en nuestro país, competirá contra #NE# la #NE# , de #NE# , #NE# , de #NE# , #NE# , de #NE# á, #NE# above all , de #NE# áfrica, y con la ganadora del #NE# de #NE# , #NE# A #NE# #NE# , de #NE# .

但是regex在使用\w时没有考虑重音字符,例如Canadá->;#NE# áSudáfrica->;#NE# áfrica。我该怎么办?如何在正则表达式中包含重音词?它必须是Canadá->;#NE#Sudáfrica->;#NE#。在

我想如果忽略诸如A仍然是A这样的单字符单词是可以的。除非有办法解决这个问题。在


Tags: textgtde单词lawordquefirst
2条回答

因为\w+或{}与重音字符不匹配。所以它不能匹配这些词。在

您可以使用\S+代替\w+

re.sub(r'[A-Z]\S+\s*', ' #NE# ', the_rest)

如果只想匹配任何语言的单词字符,请使用regex模块。在

^{pr2}$

有没有可能使用unicode符号来捕获字符范围?例如:[\xC0-\xE1]或其他什么?我按Pythex运行它,它似乎并不介意。。。你需要找到自己的射程,但这只是个开始:)

希望这有帮助。在

相关问题 更多 >