簡體   English   中英

Python Regex - 刪除特殊字符但保留撇號

[英]Python Regex - Remove special characters but preserve apostraphes

我試圖從一些文本中刪除所有特殊字符,這是我的正則表達式:

pattern = re.compile('[\W_]+', re.UNICODE)
words = str(pattern.sub(' ', words))

超級簡單,但遺憾的是,當使用撇號(單引號)時會導致問題。 例如,如果我有“不”字樣,則此代碼返回“doesn”。

有沒有辦法調整這個正則表達式,以便它不會刪除這樣的實例中的撇號?

編輯:這是我所追求的:

 doesn't this mean it -technically- works? 

應該:

這不意味着它在技術上有效

像這樣?

>>> pattern=re.compile("[^\w']")
>>> pattern.sub(' ', "doesn't it rain today?")
"doesn't it rain today "

如果下划線也應該被過濾掉:

>>> re.compile("[^\w']|_").sub(" ","doesn't this _technically_ means it works? naïve I am ...")
"doesn't this  technically  means it works  naïve I am    "

我能夠使用此正則表達式將您的樣本解析為單詞列表: [az]*'?[az]+

然后你可以用空格加入列表的元素。

怎么樣

re.sub(r"[^\w' ]", "", "doesn't this mean it -technically- works?")

怎么樣([^\\w']|_)+

請注意,這不適用於以下內容:

doesn't this mean it 'technically' works?

這可能不是你想要的。

暫無
暫無

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

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