4

「これはテストです。4.55 と 5,000」のような文章があります。文末のピリオドを削除したいのですが、数字の間は削除したくありません。私の出力は、「これはテスト 4.55 および 5,000 です」である必要があります。以下のオプションを試しましたが、必要な出力が得られませんでした。

wordList = "this is a test. 4.55 and 5,000."
pattern3 = re.compile("[^\w\d]+")
wordList = pattern3.sub(' ',wordList)

以下の2も試しました:

pattern3 = re.compile("[^\w]|^[0-9]\.[0-9]")
pattern3 = re.compile("[^\w]|^([0-9]/.[0-9]+)")

どこが間違っているのかわかりません。誰かが私にいくつかの指針を与えることができますか? 以前の投稿を検索して試してみましたが、私の状況ではうまくいきません。

4

3 に答える 3

6

否定先読みを試してください:

\.(?!\d)

これが一致するのは、数字が続かないピリオドです。

于 2012-09-16T16:02:18.730 に答える
5

正規表現では、$特殊文字「[一致する]文字列の終わりまたは文字列の終わりの改行の直前」

その場合、1行に1文だけを想定すると、次のことをお勧めします。

\.$

これは、文字列の終わり(または複数行の文字列の場合は行の終わり)で発生するピリオドにのみ一致します。もちろん、1行に1つの文を保証できない場合は、それらは解決策ではありません。

于 2012-09-16T16:10:26.797 に答える
0

どうですか

pattern = re.compile(r'\.(\s)')
wordList = pattern.sub(r'\1', wordList)

これにより、ピリオドの後にスペースが続く部分がスペースだけに置き換えられます。

于 2012-09-16T16:02:38.393 に答える