2017-05-12 3 views
1

この完全な停止(最後のものを除く)の後にスペースが続くかどうかを確認する、この簡単なテキストの修正を行うためのPythonのクリーンな方法は何ですか?ドットの後に空白がないことは、入力文字列で唯一可能なエラーであると仮定してください。私はこれをやっている完全停止後にスペースを追加する

def textFix(text): 
    result = re.sub('\.(?!\s)', '. ', text) 
    if (result[len(result) - 1]) == ' ': 
     return result[:-1] 
    return result 

答えて

2

あなたは

\.(?!\s|$) 

でそれを確認することがregex demoを参照してください。これは、空白文字または文字列の終わりに従わないドット、つまりそれの後ろに空白を持たない最終的でないドットと一致します。

それとも、あなたはまた、任意のドットを一致させるために

\.(?=\S) 

を考慮することができるが、非空白文字に続きます。

another demoを参照してください。

Python demo

import re 
rx = r"\.(?=\S)" 
s = "Text1. Text2.Text3." 
result = re.sub(rx, ". ", s) 
print(result) 
# => "Text1. Text2. Text3." 
+0

ところで、 '\(?= \ S)'好ましいです。 –

+0

うわー、 '\。(?= \ S)'は高速です!共有ありがとう:) – degant

1

あなたの技術は完璧に見えます。しかし、また、最後のドットの後にスペースを追加することを避けるために、チェックを含める(.

.が一致しなかった場合、文字列 $の終わりが続いているので、何もスペースがそれの後に追加されていない場合 (?!$)は確かに役立ちます
\.(?!\s)(?!$) 

。それは先読み中に存在しない交互に速く起因働くので

Regex 101 demo

関連する問題