计算文章摘要

Sin*_*ion 5 python markdown

我正在寻找一种方法来自动生成一个抽象,基本上是博客条目的前几个部分/段落,以显示在文章列表中(以降价方式编写).目前,我正在做这样的事情:

def abstract(article, paras=3):
    return '\n'.join(article.split('\n')[0:paras])
Run Code Online (Sandbox Code Playgroud)

只抓住前几行的文字,但我对结果并不满意.

我真正想要的是在条目列表中显示大约1/3的屏幕格式化文本,但是使用上面的算法,拉出的金额最终变化很大,就像一个一两行,经常与更理想的大小摘要混合.

有没有一个擅长这种事情的图书馆?如果没有,你有什么建议来提高产量吗?

Nad*_*mli 7

编辑:

你可以这样做:

from textwrap import wrap

def getAbstract(text, lines=5, screenwidth=100):
    width = len(' '.join([
               line for block in text.splitlines()
               for line in wrap(block, width=screenwidth)
            ][:lines]))
    return text[:width] + '...'
Run Code Online (Sandbox Code Playgroud)

这使用textwrap算法来获得理想的文本长度.它会将文本分成屏幕大小的行,并使用它们来计算所需行数的长度.

例如,在python维基百科页面条目上应用此算法:

print getAbstract(text, lines=7)
Run Code Online (Sandbox Code Playgroud)

会给你这个输出:

Python是一种通用的高级编程语言.2其设计理念强调代码可读性.[3] Python声称"[结合]非凡的功能和非常清晰的语法",[4]并且其标准库是庞大而全面的.在流行的编程语言中,它使用缩进作为块分隔符是不常见的.

Python支持多种编程范例(主要面向对象,命令式和功能性),并具有完全动态类型系统和自动内存管理,类似于Perl,Ruby,Scheme和Tcl.与其他动态语言一样,Python通常用作脚本......


没有进一步的细节,很难帮助你.但如果您的问题是前几行对于某些条目来说太多了,您可能需要查看textwrap

例如,如果您只需要100个字符的摘要,则可以执行以下操作:

import textwrap

abstract = textwrap.wrap(text, 100)[0]
Run Code Online (Sandbox Code Playgroud)

这也将取代带有空格的换行符,这可能是您所需要的.