我在文本文件中有这样的文本
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而不写入现有行。
感谢您的任何帮助。
答案 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.
即使在边缘情况下,这种方法也很有可能起作用,而其他大多数情况下则不会。