我正在用python编写一个自动抽象算法。 现在我试着找到每个段落的第一句话。所以我必须划分每个段落。 我想出了一个用新行符号拆分段落的想法。例如,'\ n'。 但它每次都可能无效。恐怕结果因平台而异。 有没有更好的判断段落的方法?
答案 0 :(得分:1)
只需使用splitlines()
即可。你不必担心奇怪的换行。
答案 1 :(得分:1)
这是程序设计的一个很好的练习。段落的样式取决于特定文本的印刷惯例。有些以新行开头,有些带有空格或制表符缩进,有些插入空行。
我真的希望它是一个抽象(通用)算法,将该逻辑从主函数中解耦出来并作为额外参数传递,例如:
def split_by_newline(text):
''' Split text by new lines '''
return text.splitlines()
def split_by_indentation(text):
''' Detect paragraphs by indentations '''
# ...
def take_first_sencence(paragraph):
''' Expect a single paragraph, return its first sentence'''
# ...
def take_first_sentences(text, paragraph_policy=split_by_newline):
for paragraph in paragraph_policy(text):
yield take_first_sentence(paragraph)
答案 2 :(得分:0)
正则表达式(?:(?<=^)|(?<=[\r\n]))[^\r\n.]+\.?
将匹配字符串开头后的所有非换行,非点字符或者末尾带有可选点的换行符。