簡體   English   中英

如何在正則表達式中包含重音詞

[英]How to Include accented words in regex

我有一個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# ),第一個單詞除外。 因此,所需的輸出如下所示:

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# , y con la ganadora del  #NE# de  #NE# ,  #NE# A #NE# #NE# , de  #NE# .

我已經嘗試過使用正則表達式,如下所示:

>>> 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),聖埃斯特雷納河畔埃斯特雷納(nu hostro nuestropaís),競爭#NE#la#NE#,de #NE#,#NE#,de #NE#,#NE#,de#NE#á,#NE# ,de#NE#非洲,y con la ganadora del#NE#de#NE#,#NE#A#NE##NE#,de#NE#。

但是使用\\w ,正則表達式不考慮重音字符,例如Canadá -> #NE# á ; Sudáfrica -> #NE# áfrica 我該如何解決? 如何在我的正則表達式中包含重音詞? 它必須是Canadá -> #NE# ; Sudáfrica -> #NE#

我想如果忽略像A這樣A單個字符單詞仍然是A 除非有解決方法。

因為\\w+[\\w]+與重音字符不匹配。 因此它無法匹配這些單詞。

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

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

要么

如果只想匹配任何語言的單詞字符,請使用regex模塊。

regex.sub(r'[A-Z]\p{L}+\s*', ' #NE# ', the_rest)

您是否有可能使用unicode表示法捕獲字符范圍? 示例:[\\ xC0- \\ xE1]還是其他? 我是由Pythex運行的,它似乎並不介意...您需要找到自己的范圍,但這只是一個開始:)

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM