最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)提取文章摘要的方法

 更新時(shí)間:2015年04月21日 16:27:38   作者:RussellLuo  
這篇文章主要介紹了Python實(shí)現(xiàn)提取文章摘要的方法,實(shí)例分析了Python提取文章摘要的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)提取文章摘要的方法。分享給大家供大家參考。具體如下:

一、概述

在博客系統(tǒng)的文章列表中,為了更有效地呈現(xiàn)文章內(nèi)容,從而讓讀者更有針對(duì)性地選擇閱讀,通常會(huì)同時(shí)提供文章的標(biāo)題和摘要。

一篇文章的內(nèi)容可以是純文本格式的,但在網(wǎng)絡(luò)盛行的當(dāng)今,更多是HTML格式的。無(wú)論是哪種格式,摘要 一般都是文章 開(kāi)頭部分 的內(nèi)容,可以按照指定的 字?jǐn)?shù) 來(lái)提取。

二、純文本摘要

純文本文檔 就是一個(gè)長(zhǎng)字符串,很容易實(shí)現(xiàn)對(duì)它的摘要提?。?/p>

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a summary of the TEXT-format document"""
def get_summary(text, count):
  u"""Get the first `count` characters from `text`
    >>> text = u'Welcome 這是一篇關(guān)于Python的文章'
    >>> get_summary(text, 12) == u'Welcome 這是一篇'
    True
  """
  assert(isinstance(text, unicode))
  return text[0:count]
if __name__ == '__main__':
  import doctest
  doctest.testmod()

三、HTML摘要

HTML文檔 中包含大量標(biāo)記符(如<h1>、<p>、<a>等等),這些字符都是標(biāo)記指令,并且通常是成對(duì)出現(xiàn)的,簡(jiǎn)單的文本截取會(huì)破壞HTML的文檔結(jié)構(gòu),進(jìn)而導(dǎo)致摘要在瀏覽器中顯示不當(dāng)。

在遵循HTML文檔結(jié)構(gòu)的同時(shí),又要對(duì)內(nèi)容進(jìn)行截取,就需要解析HTML文檔。在Python中,可以借助標(biāo)準(zhǔn)庫(kù) HTMLParser 來(lái)完成。

一個(gè)最簡(jiǎn)單的摘要提取功能,是忽略HTML標(biāo)記符而只提取標(biāo)記內(nèi)部的原生文本。以下就是類似該功能的Python實(shí)現(xiàn):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a raw summary of the HTML-format document"""
from HTMLParser import HTMLParser
class SummaryHTMLParser(HTMLParser):
  """Parse HTML text to get a summary
    >>> text = u'<p>Hi guys:</p><p>This is a example using SummaryHTMLParser.</p>'
    >>> parser = SummaryHTMLParser(10)
    >>> parser.feed(text)
    >>> parser.get_summary(u'...')
    u'<p>Higuys:Thi...</p>'
  """
  def __init__(self, count):
    HTMLParser.__init__(self)
    self.count = count
    self.summary = u''
  def feed(self, data):
    """Only accept unicode `data`"""
    assert(isinstance(data, unicode))
    HTMLParser.feed(self, data)
  def handle_data(self, data):
    more = self.count - len(self.summary)
    if more > 0:
      # Remove possible whitespaces in `data`
      data_without_whitespace = u''.join(data.split())
      self.summary += data_without_whitespace[0:more]
  def get_summary(self, suffix=u'', wrapper=u'p'):
    return u'<{0}>{1}{2}</{0}>'.format(wrapper, self.summary, suffix)
if __name__ == '__main__':
  import doctest
  doctest.testmod()

HTMLParser(或者 BeautifulSoup 等等)更適合完成復(fù)雜的HTML摘要提取功能,對(duì)于上述簡(jiǎn)單的HTML摘要提取功能,其實(shí)有更簡(jiǎn)潔的實(shí)現(xiàn)方案(相比 SummaryHTMLParser 而言):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a raw summary of the HTML-format document"""
import re
def get_summary(text, count, suffix=u'', wrapper=u'p'):
  """A simpler implementation (vs `SummaryHTMLParser`).
    >>> text = u'<p>Hi guys:</p><p>This is a example using SummaryHTMLParser.</p>'
    >>> get_summary(text, 10, u'...')
    u'<p>Higuys:Thi...</p>'
  """
  assert(isinstance(text, unicode))
  summary = re.sub(r'<.*?>', u'', text) # key difference: use regex
  summary = u''.join(summary.split())[0:count]
  return u'<{0}>{1}{2}</{0}>'.format(wrapper, summary, suffix)
if __name__ == '__main__':
  import doctest
  doctest.testmod()

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • pyqt彈出新對(duì)話框,以及關(guān)閉對(duì)話框獲取數(shù)據(jù)的實(shí)例

    pyqt彈出新對(duì)話框,以及關(guān)閉對(duì)話框獲取數(shù)據(jù)的實(shí)例

    今天小編就為大家分享一篇pyqt彈出新對(duì)話框,以及關(guān)閉對(duì)話框獲取數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Django使用echarts進(jìn)行可視化展示的實(shí)踐

    Django使用echarts進(jìn)行可視化展示的實(shí)踐

    可視化是將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來(lái),本文主要介紹了Django使用echarts進(jìn)行可視化展示的實(shí)踐,感興趣的可以了解一下
    2021-06-06
  • pygame實(shí)現(xiàn)成語(yǔ)填空游戲

    pygame實(shí)現(xiàn)成語(yǔ)填空游戲

    這篇文章主要介紹了pygame實(shí)現(xiàn)成語(yǔ)填空游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開(kāi)的方法

    Python判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開(kāi)的方法

    這篇文章主要介紹了Python如何判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開(kāi),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 淺談Python實(shí)現(xiàn)Apriori算法介紹

    淺談Python實(shí)現(xiàn)Apriori算法介紹

    這篇文章主要介紹了淺談Python實(shí)現(xiàn)Apriori算法介紹,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Python 實(shí)現(xiàn)在文件中的每一行添加一個(gè)逗號(hào)

    Python 實(shí)現(xiàn)在文件中的每一行添加一個(gè)逗號(hào)

    下面小編就為大家分享一篇Python 實(shí)現(xiàn)在文件中的每一行添加一個(gè)逗號(hào),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 使用pytorch實(shí)現(xiàn)線性回歸

    使用pytorch實(shí)現(xiàn)線性回歸

    這篇文章主要為大家詳細(xì)介紹了使用pytorch實(shí)現(xiàn)線性回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python?matplotlib.pyplot.subplots()用法詳解

    Python?matplotlib.pyplot.subplots()用法詳解

    這篇文章主要介紹了Python?matplotlib.pyplot.subplots()用法的相關(guān)資料,matplotlib.pyplot.subplots()用于創(chuàng)建子圖,可設(shè)置行數(shù)、列數(shù)、軸共享、額外關(guān)鍵字參數(shù)和布局選項(xiàng),需要的朋友可以參考下
    2024-12-12
  • python登錄并爬取淘寶信息代碼示例

    python登錄并爬取淘寶信息代碼示例

    這篇文章主要介紹了python 登錄并爬取淘寶信息代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • pyqt6實(shí)現(xiàn)關(guān)閉窗口前彈出確認(rèn)框的示例代碼

    pyqt6實(shí)現(xiàn)關(guān)閉窗口前彈出確認(rèn)框的示例代碼

    本文主要介紹了pyqt6實(shí)現(xiàn)關(guān)閉窗口前彈出確認(rèn)框的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02

最新評(píng)論

宝鸡市| 济源市| 绥化市| 睢宁县| 蒙阴县| 乌什县| 扎囊县| 宜阳县| 图木舒克市| 老河口市| 察哈| 海口市| 准格尔旗| 青河县| 茌平县| 桃园市| 枝江市| 宁乡县| 西乌| 阿荣旗| 南木林县| 宜章县| 宁夏| 泌阳县| 陇西县| 页游| 萝北县| 句容市| 峡江县| 高安市| 乌兰县| 长汀县| 扬州市| 鞍山市| 张掖市| 洛宁县| 宁南县| 彭山县| 石台县| 阜新| 克东县|