2017-05-30 23 views
-1

後添加的空間,我有一個字符串,如下所示:Python的正則表達式來點或逗號

行=「這是一個text.This是另一種文本,它有逗號後沒有空間」

我想點逗號後面加一個空格,這樣最終的結果是:

換行符=「這是一個文本這是另一個文本,它有逗號後沒有空間。」

我試過這裏的解決方案:Python Regex that adds space after dot,但它只適用於點逗號。我一直無法掌握如何讓正則表達式同時識別兩個字符。

+1

作爲一個簡單的解決方案,因爲你不喜歡正則表達式,爲什麼不做兩個經過?一個用於處理句點,另一個用於處理逗號。 –

+0

你也可以做到沒有正則表達式 – Gahan

回答

5

使用此正則表達式匹配的位置,其中前面的字符是一個點或逗號和下一個字符不是空格:

(?<=[.,])(?=[^\s]) 
  • (?<=[.,])積極的回顧後,以查找逗號
  • (?=[^\s])積極向前,匹配不是空間的任何東西

因此,這將匹配逗號或空格後面的位置,如ext.Thistext,it。但不是word. This

替換爲一個空格(

Regex101 Demo

的Python:

line = "This is a text.This is another text,it has no space after the comma." 
re.sub(r'(?<=[.,])(?=[^\s])', r' ', line) 

// Output: 'This is a text. This is another text, it has no space after the comma.' 
+0

就是這樣!謝謝。正則表達式可能會嚇人,但它們緊湊而且快速。 – maurobio

+0

是的,一旦你掌握了它,你會意識到它們是簡單而有效的,而不是那麼可怕。我建議從這裏開始(https://www.rexegg.com/)並使用regex101在你學習的時候玩! – degant

1

或者你也可以不用正則表達式解決如下:

>>> line = "This is a text.This is another text,it has no space after the comma." 
>>> line.replace('.', '. ', line.count('.')).replace(',', ', ', line.count(',')) 
'This is a text. This is another text, it has no space after the comma. ' 
>>>