मुझे स्ट्रिंग्स के अंत में केवल टेक्स्ट भाग और उप संख्या निकालने की आवश्यकता है:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'9. Ut enim ad minima veniam, quis nostrum exercitationem.2',
'. . . . . 9.1 dolore magnam aliquam quaerat',
'. . . . . 9.1 ed quia consequuntur magni.1',
'. . . . . 9.2 Quis autem vel eum iure reprehenderit.2'
इस तरह:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'Ut enim ad minima veniam, quis nostrum exercitationem.2',
'dolore magnam aliquam quaerat',
'ed quia consequuntur magni.1',
'Quis autem vel eum iure reprehenderit.2'
क्या यह संभव है कि पाइथन रेगेक्स में सिंगल re.findall(r'( )', item) के साथ ऐसा करें? ऐसा लगता है कि मैं स्ट्रिंग की शुरुआत में संख्याओं को स्ट्रिंग के अंत में संख्या से 'अलग' करने में सक्षम नहीं हूं।
मैंने निम्नलिखित कोड के साथ उदाहरण के लिए प्रयास किया है:
string ='. . . . . 9.2 Quis autem vel eum iure reprehenderit.2'
string = re.findall(r'([a-öA-Ö0-9/:._]+)',string)
string = ' '.join( list(filter(lambda x: x != '.', string)))
यह देता है:
'9.2 Quis autem vel eum iure reprehenderit.2'
लेकिन यह सामने की संख्या को नहीं हटाता है, जटिल है और मूल पाठ को भी विभाजित करता है और बीच में स्थान के साथ वापस जुड़ जाता है। मैं उस स्ट्रिंग को काटना चाहता हूं जहां टेक्स्ट शुरू होता है और मूल टेक्स्ट भाग को वास्तव में स्पर्श नहीं करना चाहता, उदाहरण के लिए शब्दों के बीच दो रिक्त स्थान हो सकते हैं, लेकिन उन्हें संरक्षित किया जाना चाहिए।
3 जवाब
अधिक जटिल नियमित अभिव्यक्ति का उपयोग करने का प्रयास करें, उदाहरण के लिए:
import re
expression = re.compile(r'(.*?[0-9].+? )*(.+)')
# this is a list of tuples, and you are always interested in the last match
results = expression.findall('<string>')[-1][-1]
आप नियमित अभिव्यक्ति से मेल खाने वाले सबस्ट्रिंग को परिवर्तित कर सकते हैं (केस-उदासीन ध्वज सेट के साथ)
(?<=^')[^a-z]+
खाली तारों को।
रेगुलर एक्सप्रेशन पढ़ता है, "अक्षरों के अलावा एक या एक से अधिक वर्णों का मिलान करें जो एक पंक्ति की शुरुआत में एक उद्धरण का अनुसरण करते हैं", (?<=^')
एक सकारात्मक लुकबैक है।
str.gsub(/(?<=^)[^a-z]+/, '')
सही परिणाम देता है। शायद आप या कोई अन्य पाठक मेरे पायथन कोड में कोई त्रुटि खोज सकते हैं।
शायद...
import re
text = """
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'9. Ut enim ad minima veniam, quis nostrum exercitationem.2',
'. . . . . 9.1 dolore magnam aliquam quaerat',
'. . . . . 9.1 ed quia consequuntur magni.1',
'. . . . . 9.2 Quis autem vel eum iure reprehenderit.2'
"""
pattern = re.compile(r".*?(\d\.\d? )")
print(pattern.sub(r"'", text))
आउटपुट:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'Ut enim ad minima veniam, quis nostrum exercitationem.2',
'dolore magnam aliquam quaerat',
'ed quia consequuntur magni.1',
'Quis autem vel eum iure reprehenderit.2'
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।