2

重複の可能性:
区切り文字を削除しない Python split()

次のように文字列を分割したい:

text = " T?e  qu!ck ' brown 1 fox!     jumps-.ver. the 'lazy' doG?  !"
result -> (" T?e  qu!ck ' brown 1 fox!", "jumps-.ver.", "the 'lazy' doG?", "!")

したがって、基本的には". ""! "またはで分割し"? "たいのですが、分割ポイントのスペースを削除したいのですが、ドット、コンマ、または疑問符は削除したくありません。

効率的な方法でこれを行うにはどうすればよいですか?

str split 関数はセパレーターのみを受け取ります。必要な結果を作成するときに、すべてのスペースで分割し、ドット、コンマ、または疑問符で終わるスペースを見つけるのが最善の解決策であると思います。

4

1 に答える 1

14

正規表現分割を使用してこれを実現できます。

>>> import re
>>> text = " T?e  qu!ck ' brown 1 fox! jumps-.ver. the 'lazy' doG?  !"
>>> re.split('(?<=[.!?]) +',text)
[" T?e  qu!ck ' brown 1 fox!", 'jumps-.ver.', "the 'lazy' doG?", '!']

正規表現は、., ! が先行する場合にのみ'(?<=[.!?]) +'、1 つ以上のスペース ( ' +'また ?文字 ( '(?<=[.!?])')。

于 2013-01-31T09:57:13.713 に答える