如何自动抽象判断段落?

时间:2013-11-29 04:53:03

标签: python

我正在用python编写一个自动抽象算法。 现在我试着找到每个段落的第一句话。所以我必须划分每个段落。 我想出了一个用新行符号拆分段落的想法。例如,'\ n'。 但它每次都可能无效。恐怕结果因平台而异。 有没有更好的判断段落的方法?

3 个答案:

答案 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)

另请参阅Strategy design pattern

答案 2 :(得分:0)

正则表达式(?:(?<=^)|(?<=[\r\n]))[^\r\n.]+\.?将匹配字符串开头后的所有非换行,非点字符或者末尾带有可选点的换行符。