在新行上打印每个句子

时间:2019-03-24 17:01:01

标签: python

我在文本文件中有这样的文本

Long sleeve wool coat in black. Breast pocket.

,我想要一个输出,每个句子都印在下一行,像这样。

Long sleeve wool coat in black.

Breast pocket.

我尝试了以下question,但根据要求,它给出的输出为

Long sleeve wool coat in black.

Breast pocket.

None

而且我还必须对从原始文件读取的多个文本文件执行此操作,我必须以这种方式覆盖该文件,以分隔行。但是当我尝试执行此操作时,只会写入None而不写入现有行。

感谢您的任何帮助。

3 个答案:

答案 0 :(得分:2)

尝试:

in_s = 'Long sleeve wool coat in black. Breast pocket.'
in_s += ' '
out = in_s.split('. ')[:-1]
print('.\n'.join(out))

说明:

  • in_s += ' '在字符串的末尾添加一个空格,使其以`'结尾。 ``就像其他句子一样。
  • ...in_s.split('. ')...在有句点和空格('. ')的任何地方分割文本。
  • ...[:-1]删除最后一个值,如果文本以句点和空格结尾,则为None
  • ...'\n.join(out)在打印前用句点和换行符分隔值。

答案 1 :(得分:2)

尝试:

s = 'Long sleeve wool coat in black. Breast pocket.'
print(s.replace('. ', '.\n'))

答案 2 :(得分:2)

帮个忙,并使用nltk而不是正则表达式甚至是简单的str.split()

from nltk import sent_tokenize

string = "Long sleeve wool coat in black. Breast pocket. Mr. Donald Trump is the president of the U.S.A."

for sent in sent_tokenize(string):
    print(sent)

哪个产量

Long sleeve wool coat in black.
Breast pocket.
Mr. Donald Trump is the president of the U.S.A.

即使在边缘情况下,这种方法也很有可能起作用,而其他大多数情况下则不会。