[英]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.