Python 在文本文件中创建带句号(句点)的新行

Python 在文本文件中创建带句号(句点)的新行,python,string,text,nlp,period,Python,String,Text,Nlp,Period,我在一个文本文件中有一个句子,我想用python显示它,但我想在每一个句号(句号)后都显示一个新行 例如,我的段落是 "Dr. Harrison bought bargain.co.uk for 2.5 million pounds, i.e. he paid a lot for it. Did he mind? John Smith, Esq. thinks he didn't. Nevertheless, this isn't true... Well, with a probability

我在一个文本文件中有一个句子,我想用python显示它,但我想在每一个句号(句号)后都显示一个新行

例如,我的段落是

"Dr. Harrison bought bargain.co.uk for 2.5 million pounds, i.e. he
paid a lot for it. Did he mind? John Smith, Esq. thinks he didn't.
Nevertheless, this isn't true... Well, with a probability of .9 it
isn't."
但我希望它显示如下

"Dr. Harrison bought bargain.co.uk for 2.5 million pounds, i.e. he
paid a lot for it. 
Did he mind? John Smith, Esq. thinks he didn't. 
Nevertheless, this isn't true... 
Well, with a probability of .9 it isn’t."
这一点在句子中出现的其他句点中变得越来越困难,例如在网站地址中出现的“Dr.”、“Esq.”、“the”.9”,当然还有省略号中的前两个点

我不知道如何处理文本文件中存在的其他时段,有人能帮忙吗?多谢各位

“您的任务是编写一个程序,使给定文本文件名的程序能够写入其
每一句话都在一行上。当且仅当点后面有空格和大写字母时,才可以添加换行符。它不会解决所有的情况,但结合使用“Dr.”这样的异常字典,你可以做得相当好,尽管不是完美的

更新: 我所说的词典是指Python词典和单词列表
我没有找到任何包含最常见缩写的可下载文件,因此恐怕您必须自己制作一个

当且仅当点后面有空格和大写字母时,才可以添加换行符。它不会解决所有的情况,但结合使用“Dr.”这样的异常字典,你可以做得相当好,尽管不是完美的

更新: 我所说的词典是指Python词典和单词列表
我没有找到任何包含最常见缩写的可下载文件,因此恐怕您必须自己制作一个

这将对您的文本执行以下操作:

text = "Dr. Harrison bought bargain.co.uk for 2.5 million pounds, i.e. he "\
       "paid a lot for it. Did he mind? John Smith, Esq. thinks he didn't. "\
       "Nevertheless, this isn't true... Well, with a probability of .9 it "\
       "isn't."

import re

pat = ('(?<!Dr)(?<!Esq)\. +(?=[A-Z])')
print re.sub(pat,'.\n',text)
但是,不可能有一个正则表达式模式,它在人类写作这样复杂的事情上永远不会失败。
例如,请注意,我不得不提出一个否定的回溯断言,以排除Dr.的情况(我也对Esq.做了同样的处理,尽管它在您的文本中并不代表问题,因为它后面跟有thinks,它不以大写字母开头)
我认为不可能提前将所有类似的案例放在正则表达式模式中,总有一些未考虑的案例会在某一天发生


但是,这段代码做了很多期望的工作。还不错,我尊重。

这在你的文本中起到了作用:

text = "Dr. Harrison bought bargain.co.uk for 2.5 million pounds, i.e. he "\
       "paid a lot for it. Did he mind? John Smith, Esq. thinks he didn't. "\
       "Nevertheless, this isn't true... Well, with a probability of .9 it "\
       "isn't."

import re

pat = ('(?<!Dr)(?<!Esq)\. +(?=[A-Z])')
print re.sub(pat,'.\n',text)
但是,不可能有一个正则表达式模式,它在人类写作这样复杂的事情上永远不会失败。
例如,请注意,我不得不提出一个否定的回溯断言,以排除Dr.的情况(我也对Esq.做了同样的处理,尽管它在您的文本中并不代表问题,因为它后面跟有thinks,它不以大写字母开头)
我认为不可能提前将所有类似的案例放在正则表达式模式中,总有一些未考虑的案例会在某一天发生


但是,这段代码做了很多期望的工作。我认为还不错。

这不是关于Python(或任何其他编程语言)的问题,而是关于英语中的句子是什么。如果没有正确的句子分析,这几乎是不可能的。你可以用已知的好例子来尝试字典,但除此之外的一切可能都太难了。不,我想问的是如何用python显示文本文件,以便在每个句点后创建新行。你如何处理
中的句点,即
?嗯,你想问的是如何区分句点是句点和其他句点。这根本不是python的问题,这属于自然语言处理领域。这不是关于python(或任何其他编程语言)的问题,而是关于英语中的句子是什么。如果没有正确的句子分析,这几乎是不可能的。你可以用已知的好例子来尝试字典,但除此之外的一切可能都太难了。不,我想问的是如何用python显示文本文件,以便在每个句点后创建新行。你如何处理
中的句点,即
?嗯,你想问的是如何区分句点是句点和其他句点。这根本不是python问题,这属于自然语言处理领域。我很高兴看到我的答案做得很好:)@eyquem当我开始写我的答案时,你的答案还没有发布。我花了一段时间,因为我在寻找一个可下载的单词列表。没有理由这么讽刺。我很高兴看到我的答案做得很好:)@eyquem当我开始写我的答案时,你的答案还没有发布。我花了一段时间,因为我在寻找一个可下载的单词列表。没有理由讽刺。