簡體   English   中英

如何獲得此正則表達式以忽略帶重音符號的字符?

[英]How do I get this regular expression to ignore accented characters?

我有一個文本文件,腳本正在讀取該文件並從中獲取最常用的單詞。 但是,在執行此操作的某一時刻,在清理源文本期間,它無法處理帶重音符號的字符(在這種情況下,它們是áéíóöőúúüű)。

這就是我目前所擁有的。

str = re.sub(r'\W+', ' ', str)

這只是刪除重音字符。 我試過添加flags=re.U ,但是它以不同的方式弄亂了結果。 我懷疑有一種簡單的方法可以解決我的問題,盡管我一直在尋找它,但是沒有成功,所以我求助於您。 提前致謝。

您需要使用正確的修飾符:

str = re.sub(ur'\W+', u' ', s, flags=re.UNICODE)
                                     ^^^^^^^^^^

參見Python 2.x文檔

使\\w\\W\\b\\B\\d\\D\\s\\S序列依賴於Unicode字符屬性數據庫。 還為IGNORECASE啟用非ASCII匹配。

這是一個在線Python 2.7演示

import re
s = u"characters (in this case, they are áéíóöőúüű)."
res = re.sub(ur'\W+', u' ', s, flags=re.UNICODE).encode("utf8")
print(res) # => characters in this case they are áéíóöőúüű 

暫無
暫無

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

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