2009-11-04 6 views
5

기본적으로 초록, 기본적으로 블로그 항목의 처음 몇 개/단락을 작성하여 기사 목록 (마크 다운에 작성 됨)에 표시하는 방법을 찾고 있습니다. 현재,이 같은 일을 해요 :컴퓨팅 기사 초록

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

은 텍스트의 가치가 처음 몇 줄을 잡아,하지만 난 결과에 전혀 행복하지 않다.

내가 정말로 찾고있는 것은 항목 목록에 표시 할 화면의 서식있는 텍스트의 약 1/3로 끝나기 위함이지만 위의 알고리즘을 사용하면 끌어 당기는 양은 엄청나게 다양한 양으로 끝납니다. 한 줄 또는 두 줄 정도의 작은 크기가 더 이상적인 크기의 추상으로 자주 혼합됩니다.

이런 종류의 라이브러리가 있습니까? 그렇지 않다면 출력 향상을위한 제안이 있습니까?

+3

"완전히 행복하지 않다"는 것은 무엇을 의미합니까? "잘못된"및 "올바른"요약의 예를 들려 줄 수 있습니까? –

답변

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] + '...' 

이 이상적인 텍스트 길이를 얻기 위해 textwrap 알고리즘을 사용한다. 텍스트를 화면 크기의 줄로 분리하고이를 사용하여 원하는 줄 수의 길이를 계산합니다. python wikipedia page 항목에이 알고리즘을 적용하는 예를 들어

:

파이썬은 범용 높은 수준의 프로그래밍 언어입니다 :

print getAbstract(text, lines=7) 

당신이 출력을 제공 할 것입니다. 2 디자인은 철학은 코드 을 강조합니다. [3] 파이썬은 을 "매우 합치면 놀랄만 한 힘"이라고 주장하며, 라이브러리는 크고 포괄적입니다. 구분 기호로 들여 쓰기를 사용하는 것은 널리 사용되는 프로그래밍 언어 중에서는 드문 경우입니다.

파이썬 (주로 필수적 지향 및 기능 객체)와 이 완전히 동적 타입 시스템 및 자동 메모리 관리, 펄, 루비, 제도와 유사한 및 은 Tcl을 갖추고 여러 프로그램을 패러다임을 지원합니다. 다른 동적 언어처럼, 파이썬은 종종 당신을 도울 어렵다 자세한 내용없이 ... 스크립트로


을 사용한다.

import textwrap 

abstract = textwrap.wrap(text, 100)[0] 
:하지만 경우 문제는 처음 몇 줄을 복용 만 100 문자가 다음 작업을 수행 할 수있는 추상화하려는 경우 예를 들어 textwrap

살펴해야 할 수도 있습니다 일부 항목에 대한 너무 많은 것을했다

이것은 또한 요구 사항에 따라 바람직하지 않은 공백으로 개행을 대체합니다.

+0

더그 헬맨 (Doug Hellman)은 파이썬 모듈 (Python Module of the Week) 블로그에서 텍스트 랩에 대한 좋은 글을 남겼습니다. http://www.doughellmann.com/PyMOTW/textwrap/index.html – unutbu

+0

트릭을해야합니다. 감사! – SingleNegationElimination

0

나는 당신이 원하는 것을 정확하게 모르겠습니다.

그러나 X 문자 다음에 기사를 자르고 "..."을 넣는 것이 좋습니다. 그런 다음 "추상"크기를 제어 할 수 있습니다 (현재 구현에서 문제가되는 경우).