मान लीजिए मेरे पास यह स्ट्रिंग है: s = "blah blah blah" पायथन रेगेक्स का उपयोग करके, मैं "blah" के प्रत्येक उदाहरण को एक अलग मान से कैसे बदल सकता हूं (उदाहरण के लिए मेरे पास मानों की एक सूची है v = ("1", "2", "3")
4 जवाब
आप re.sub
कॉलबैक का उपयोग कर सकते हैं:
import re
def callback(match):
return next(callback.v)
callback.v=iter(('1','2','3'))
s = "blah blah blah"
print(re.sub(r'blah',callback,s))
पैदावार
1 2 3
आप re.sub
का उपयोग कर सकते हैं, जो एक स्ट्रिंग या कार्य करता है और इसे प्रत्येक मैच पर लागू करता है:
>>> re.sub('blah', lambda m, i=iter('123'): next(i), 'blah blah blah')
<<< '1 2 3'
इस मामले में, आपको रेगेक्स की आवश्यकता नहीं है:
s.replace("blah","%s")%v
प्रतिस्थापन "%s %s %s" उत्पन्न करता है, फिर आप प्रारूप ऑपरेटर का उपयोग करते हैं
s
में %
न हो।
मुझे लगता है कि आपको वास्तव में रेगेक्स की आवश्यकता नहीं है।
for x in v:
s = s.replace('blah', x, 1)
हालांकि अगर आप वास्तव में रेगेक्स चाहते थे:
import re
for x in v:
s = re.sub('blah', x, s, count=1)
.replace
पर प्रत्येक कॉल स्ट्रिंग की शुरुआत में बदलने के लिए एक अवसर की खोज करना शुरू कर देता है। 2) यदि v
में "blah" शब्द है तो यह सीधे काम नहीं करता है।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।