2017-04-03 76 views
1

如何從python中的字符串中刪除字母點字母(例如F.B)的組合?我嘗試使用正則表達式:Python,正則表達式:如何從字符串中刪除letter.letter(a.b)?

abre = re.sub(r"\b\w+\.\[email protected]",'',abre) 

,但它不會刪除這些序列,它只是打印我同樣不變的字符串。我也嘗試刪除所有的點,然後刪除小於2個字母的單詞,但在這種情況下,我放鬆了真實的單詞。

我有什麼:C.P.A.認證計劃,會計

我想什麼:認證計劃,會計

序列的長度並不總是已知和字母也未可知。

+0

你的正則表達式出了什麼問題?你的意思是「不起作用」? 'F.B'不包含'@',你不能指望你的模式匹配字符串。 –

+0

*「小於1個字母的單詞」*:似乎你正在尋找幽靈。 – trincot

+0

那麼你在\ w後面加了+量詞,所以它會匹配1和無限多的字母/數字。 –

回答

1

你似乎想刪除包括點分隔的大寫字母的單詞。

使用

abre = re.sub(r"\b(?:[A-Z]\.)+(?!\w)",'',abre) 

regex demo。要刪除尾隨的空格,最後可以添加\s*。如果必須至少有兩個字母,請用{2,}替換+

詳細

  • \b - 領先的單詞邊界
  • (?:[A-Z]\.)+ - 一個或多個
    • [A-Z]序列 - 一個大寫的ASCII字母
    • \. -a點
  • (?!\w) - 沒有跟着一個單詞char
+0

注意我使用了'(?!\ w)',因爲只有在後面加上一個單詞char,'\。\ b'纔會匹配一個點。 '(?!\ w)'產生一個明確的字邊界。根據輸入,你甚至可以忽略它。 –

0

您可以使用replace

>>> string="rgoa.bwtg.rgqra.bergeg" 
>>> string.replace("a.b", "") 
'rgowtg.rgqrergeg' 
+0

但它並不總是a.b,它可以是任何字母。 – Extria

相關問題