2009-11-04 5 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] पाइथन का दावा करता है "बहुत ही स्पष्ट वाक्यविन्यास" के साथ उल्लेखनीय शक्ति [गठबंधन], [4] और इसकी मानक लाइब्रेरी बड़ी और व्यापक है। ब्लॉक डिलीमीटर के रूप में इंडेंटेशन का उपयोग लोकप्रिय प्रोग्रामिंग भाषाओं में असामान्य है।

अजगर कई प्रोग्रामिंग मानदंड का समर्थन करता है (मुख्य रूप से उन्मुख वस्तु, जरूरी, और कार्यात्मक) और एक पूरी तरह से गतिशील प्रकार प्रणाली और स्वत: स्मृति प्रबंधन, पर्ल, रूबी, योजना के समान है, और Tcl की सुविधा है। अन्य गतिशील भाषाओं की तरह, अजगर अक्सर एक पटकथा के रूप में


अधिक जानकारी के बिना यह मदद करने के लिए मुश्किल है प्रयोग किया जाता है ...।

import textwrap 

abstract = textwrap.wrap(text, 100)[0] 
: लेकिन यदि आपकी समस्या यह है कि पहली कुछ पंक्तियों लेने कुछ प्रविष्टियों आप textwrap

उदाहरण के लिए पर एक नजर है की आवश्यकता हो सकती है, तो आप केवल चाहते हैं 100 चरित्र सार आप निम्न कर सकते के लिए बहुत अधिक था

इससे रिक्त स्थान के साथ नई लाइनों को भी प्रतिस्थापित किया जाएगा जो आपकी आवश्यकताओं के आधार पर वांछनीय हो सकते हैं।

+0

डौग हेलमैन के सप्ताह के ब्लॉग के पाइथन मॉड्यूल में टेक्स्टव्रप पर भी एक अच्छा लेखन है: http://www.doughellmann.com/PyMOTW/textwrap/index.html – unutbu

+0

यह चाल चलाना चाहिए। धन्यवाद! – SingleNegationElimination

0

मुझे बिल्कुल यकीन नहीं है कि आप क्या चाहते हैं।

हालांकि, मैं एक्स अक्षरों के बाद लेख काटने का सुझाव दूंगा और "..." डालूंगा। फिर आपके "अमूर्त" के आकार पर अधिक नियंत्रण होता है (यदि यह आपके वर्तमान कार्यान्वयन में आपको परेशान करता है)।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^