2015-10-16 30 views
3

我期待將單個字符之間的單個空格結合在一起。將單個字符與它們之間的單個空格結合在一起

例如:

a b c  --> abc   [all combined together] 
ab c d ef --> ab cd ef [just combine the middle 'c d' 
foo bar --> foo bar [nothing between consecutive words] 

我可以使用正則表達式re.findall(r'(([A-z]){2,})' object)捕捉這個詞。但是,我不知道如何設置替換部分。

我能想到的唯一的辦法是分三個階段:

  1. 搜索與re.findall()功能術語。
  2. 將捕獲的術語組合在一起。
  3. 然後用re.sub()做替換。

但是,這看起來有點亂,而且我使用了10多萬條記錄,如果可能的話,我們寧願只做一條正則表達式語句。

+0

所以是:刪除兩個字符之間的空間(如'˚FB')。但保存兩個單詞之間的空格(如'foo bar')。對? –

+1

@KevinGuan--是的,它只是在單個字符之間[基本上,我正在尋找將縮略詞組合在一起...將例如'a k a'轉換爲'aka'] – kyrenia

+0

好的,也許將這些解釋添加到您的問題中? :) –

回答

5

查找兩個單字母的單詞,第二個爲先行,以便它可以在下一個被檢查:

>>> re.sub(r"\b(\w) (?=\w\b)", r"\1", "ab c d e and f") 
'ab cde and f' 
0

我想你可以用正則表達式嘗試:

(?<=\b\w)\s(?=\w\b) 

DEMO

然後replece匹配的空間什麼也沒有。

相關問題