जबकि स्टैक ओवरफ्लो पर कई पोस्ट हैं जो इसके समान हैं, उनमें से कोई भी ऐसी स्थिति शामिल नहीं करता है जब लक्ष्य स्ट्रिंग एक सबस्ट्रिंग के बाद एक स्थान हो।

मेरे पास निम्न स्ट्रिंग है (example_string): <insert_randomletters>[?] I want this string.Reduced<insert_randomletters>

मैं निकालना चाहता हूं "मुझे यह स्ट्रिंग चाहिए।" ऊपर के तार से। यादृच्छिक पत्र हमेशा बदलेंगे, हालांकि उद्धरण "मुझे यह स्ट्रिंग चाहिए।" हमेशा [?] (अंतिम वर्ग ब्रैकेट के बाद एक स्थान के साथ) और कम के बीच होगा।

अभी, मैं "मुझे यह स्ट्रिंग चाहिए" निकालने के लिए निम्न कार्य कर सकता हूं।

target_quote_object = re.search('[?](.*?)Reduced', example_string)
target_quote_text = target_quote_object.group(1)
print(target_quote_text[2:])

यह ] और को हटा देता है जो हमेशा मेरे निकाले गए स्ट्रिंग की शुरुआत में दिखाई देते हैं, इस प्रकार केवल "मुझे यह स्ट्रिंग चाहिए" प्रिंट होता है। हालांकि, यह समाधान बदसूरत लगता है, और मैं बिना किसी संशोधन के re.search() वर्तमान लक्ष्य स्ट्रिंग को वापस कर दूंगा। मैं यह कैसे कर सकता हूँ?

5
Roymunson 31 मार्च 2018, 22:00

2 जवाब

समाधान निकला:

target_quote_object = re.search('] (.*?)Reduced', example_string)
target_quote_text = target_quote_object.group(1)
print(target_quote_text)

हालांकि, विक्टर का समाधान बेहतर है।

1
Roymunson 31 मार्च 2018, 19:10

इसके लिए रेगेक्स हो सकता है आवश्यक नहीं है, बशर्ते आपकी स्ट्रिंग एक सुसंगत प्रारूप में हो:

mystr = '<insert_randomletters>[?] I want this string.Reduced<insert_randomletters>'

res = mystr.split('Reduced')[0].split('] ')[1]

# 'I want this string.'
2
jpp 31 मार्च 2018, 19:27