Python:句子分裂产生一个空格

时间:2013-01-13 20:44:07

标签: python python-3.x

所以我有一些句子:

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

当我使用split('。')拆分它然后将其与换行符连接时,它会丢失“。”

然后我尝试了像(?<=\.)\s这样的正则表达式,但它在第二个和第三个字母的第一个字母之前产生了一个空格:

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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:3)

".\n".join(i.strip() for i in a.split("."))

答案 2 :(得分: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.

答案 3 :(得分:1)

有多种方法可以处理拆分输入:拆分后剥离,使用正则表达式拆分或使用简单搜索。

第一个选项可能是最直观的:你将字符串分割成一个像你已经做的那样,然后剥离结果字符串以删除任何空格并恢复尾随点。在Python中:

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

第二种更简单的方法是简单地替换'。 'with'。\ n':

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

这将适用于您的输入,但如果有人使用两个空格来分隔句子(某些人更喜欢),则会失败。

最后也是最灵活的方法是使用正则表达式来分割点和空格的组合:

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

注意与正则表达式的重要区别:我使用\ s *来消耗所有可能的空格。这在有两个或更多空格的情况下很重要,或者根本没有空格。