0

だから私は次のようないくつかの文を持っています:

The window is over there. The lamp is on. The fire is burning.

split('.') を使用して分割し、改行で結合すると、「。」が失われます。

次に、次のような正規表現を試し(?<=\.)\sましたが、2 番目と 3 番目の文字の最初の文字の前にスペースが生成されます。

The window is over there.
 The lamp is on.
 The fire is burning.

私はその余分なスペースを望んでいません。私が欲しい:

The window is over there.
The lamp is on.
The fire is burning.

ありがとう

4

4 に答える 4

3
".\n".join(i.strip() for i in a.split("."))
于 2013-01-13T20:50:00.820 に答える
3
>>> test = "The window is over there. The lamp is on. The fire is burning."
>>> print test.replace(". ",".\n")
The window is over there.
The lamp is on.
The fire is burning.
于 2013-01-13T20:49:04.303 に答える
1

明らかに特別な場合(つまり、ピリオドの後にスペースがない)を扱っていないので、なぜそうしないのですか?

>>> s = 'The window is over there. The lamp is on. The fire is burning.'
>>> print s.replace('. ', '.\n')
The window is over there.
The lamp is on.
The fire is burning.
于 2013-01-13T20:50:03.110 に答える
1

入力の分割にはいくつかの方法があります。分割後にストリップする、正規表現を使用して分割する、単純な検索を使用するなどです。

最初のオプションはおそらく最も直感的です。既に行っているように文字列をドットで分割し、結果の文字列を取り除いて空白を削除し、末尾のドットを元に戻します。Python の場合:

sentences = input.split('.')
sentences = [s.strip() + '.' for s in sentences if s]
print sentences.join('\n')

2 番目のより簡単な方法は、単純な置換です。' と '.\n':

print input.replace('. ', '.\n')

これはあなたの入力で機能しますが、誰かが文を区切るために 2 つのスペースを使用すると失敗します (これを好む人もいます)。

最後の最も柔軟なアプローチは、正規表現を使用してドットと空白の組み合わせで分割することです。

import re
sentences = re.split('(?<=\.)\s*', input)
print sentences.join('\n')

正規表現との重要な違いに注意してください: \s* を使用して、可能なすべての空白を消費しました。これは、スペースが 2 つ以上ある場合、またはまったくない場合に重要です。

于 2013-01-13T20:59:04.443 に答える