拆分时段而不删除句点标点符号 - Python

时间:2016-07-11 06:07:43

标签: python regex split

我已经看到很多相关的问题,但我似乎仍无法让我的具体例子起作用。 我在一个文件中有一些数据,这几个句子串在一起。我试图将句子分成一个列表,每个句子都是列表的一个元素。但是当我分开一个句号后跟一个空格时,我会在列表的所有元素中丢失句点(除了最后一个)。 我从这开始:

text = "This sentence. And this one. One more." 

期望的输出:

["This sentence.", "And this one.", "One more."]

目前我通过text.split('。")来实现这一点:

["This sentence","And this one","One more."]

4 个答案:

答案 0 :(得分:3)

使用正面看法:

import re
re.split(r'(?<=\.) ', text)

以上假设您的句子总是以句号和空格结尾(最后一句除外)。 (?<=\.)背后是正面的,所以上面的正则表达式会在一个点后面的空格上分割,但在进行子串时不会考虑点。

答案 1 :(得分:1)

鉴于您将拆分列表存储在变量中:

strList = text.split()
for line in strList:
   line.append('.')
strList[len(strList) - 1] = strList[len(strList) - 1][:-1]

答案 2 :(得分:0)

您可以使用以下内容并修剪前导空格。

[^\.]+\.

REGEX demo

答案 3 :(得分:0)

这也可以做到

[ i.group(0) for i in re.finditer('\S[^\.]+(\.|.$)', text)]

它匹配除dot之外的任何字符,直到它到达点或行的末尾