2011-06-07 16 views
33

टेक्स्ट के ब्लॉक से अंतिम शब्द को टुकड़ा करने का सबसे अच्छा तरीका क्या है?पायथन: एक वाक्य के अंतिम शब्द काट लें?

मैं

  1. यह स्प्लिट (रिक्त स्थानों से) एक सूची और अंतिम आइटम को हटाने के बारे में सोच सकता है, तो सूची reconcatenating।
  2. अंतिम शब्द को बदलने के लिए नियमित अभिव्यक्ति का उपयोग करें।

मैं वर्तमान दृष्टिकोण # 1 ले रहा हूँ, लेकिन मैं कैसे सूची को श्रेणीबद्ध करने के लिए नहीं पता ...

content = content[position-1:position+249] # Content 
words = string.split(content, ' ') 
words = words[len[words] -1] # Cut of the last word 

कोई कोड उदाहरण बहुत सराहना कर रहे हैं।

उत्तर

105

असल में आपको सभी शब्दों को विभाजित करने की आवश्यकता नहीं है। rsplit का उपयोग करके आप दो हिस्सों में अंतिम स्थान प्रतीक द्वारा टेक्स्ट को विभाजित कर सकते हैं।

कुछ उदाहरण:

>>> text = 'Python: Cut of the last word of a sentence?' 
>>> text.rsplit(' ', 1)[0] 
'Python: Cut of the last word of a' 

rsplit "रिवर्स विभाजन" के लिए एक आशुलिपि है, और एक स्ट्रिंग के अंत से नियमित split काम करता है के विपरीत है। दूसरा पैरामीटर बनाने के लिए अधिकतम संख्या में विभाजन है - उदा। 1 का मान आपको परिणाम के रूप में दो-तत्व सूची देगा (क्योंकि एक एकल विभाजन किया गया था, जिसके परिणामस्वरूप इनपुट स्ट्रिंग के दो टुकड़े थे)।

+2

ब्याह अन्य उत्तर में से कुछ के साथ करता है, तो लगता है कि यह आवश्यक है यह नोट करने के लिए कि rsplit रिवर्स स्प्लिट (रेगेक्स स्प्लिट नहीं) है और 1 maxsplit है। –

+1

@ duckman_1991 अच्छा बिंदु - उत्तर बढ़ाया। –

2

' '.join(words) सूची को एक साथ वापस रखेगा।

4

यदि आप अपनी वर्तमान विधि रखना चाहते हैं, तो सूची को समेकित करने के लिए ' '.join(words) का उपयोग करें।

आप सूची स्लाइसिंग का उपयोग करने के लिए words = words[len[words -1]words = words[:-1] के साथ प्रतिस्थापित करना चाहेंगे।

7

आपको निश्चित रूप से विभाजित करना चाहिए और फिर अंतिम शब्द को हटा देना चाहिए क्योंकि रेगेक्स में और अधिक जटिलताओं और अनावश्यक ओवरहेड होंगे। आप और अधिक pythonic कोड का उपयोग कर सकते हैं (सामग्री यह सोचते हैं एक स्ट्रिंग है):

' '.join(content.split(' ')[:-1]) 

यह शब्दों में सामग्री विभाजित करता है, लेकिन अंतिम शब्द सभी लेता है, और रिक्त स्थान के साथ शब्दों में पुनः सम्मिलित हो।

5

यदि आप चाहें सघनता:

' '.join(content.split(' ')[:-1]) + ' ...' 
3

या

import re 

print ' '.join(re.findall(r'\b\w+\b', text)[:-1]) 
+0

मुझे लगता है कि रेगेक्स आपको लाभ देगा जब आपका शब्द न केवल सफेद रिक्त स्थान से विभाजित होगा। अन्यथा rsplit आपकी पसंद है। –

0

अंतरिक्ष के अंतिम सूचकांक प्राप्त करें और स्ट्रिंग

>>> text = 'Python: Cut of the last word of a sentence?' 
>>> text[:text.rfind(' ')] 
'Python: Cut of the last word of a' 
संबंधित मुद्दे