Find and Replace in Python – Core Types के अन्तर्गत भी हमने Discuss किया था कि Strings Immutable होते हैं, इसलिए Strings में कभी कोई In-Place Change सम्भव नहीं होता। लेकिन हम हमारी जरूरत के अनुसार नई String Create कर सकते हैं और उस String को किसी भी Variable में फिर से Assign करके उस String को Change कर सकते हैं। String में परिवर्तन करते हुए एक नई String बनाने के लिए हम String के replace() Method को Use कर सकते हैं अथवा हम String Slicing की प्रक्रिया भी अपना सकते हैं।
जब हम replace() Method का प्रयोग करते हुए किसी String के Content को Change करना चाहते हैं, तब हमें इस Method में Source व Target के रूप में दो Parameters Pass करने होते हैं। परिणामस्वरूप जब ये Method Execute होता है, तो वह Source Text को String में Search करता है और जहां-जहां भी Source String मिलता है, उसे Target String से Replace कर देता है। इस पूरी प्रकिया को एक Simple Example द्वारा निम्नानुसार बेहतर तरीके से समझ सकते हैं-
[code] FileName: SlicingAndReplaceMethod.py # Replace String using Slicing str1 = "KRISHNA YADAV" print("Actual String:", str1) print("Apply: str1 = str1[:8] + 'MURARI ' + str1[7:] ") str1 = str1[:8] + 'MURARI' + str1[7:] print("Changed String:", str1) print() # Replace String using replace() Method str2 = "KRISHNA YADAV" print("Actual String:", str2) print("Apply: str2.replace(' ', ' MURARI ')") str2 = str2.replace(' ', ' MURARI ') print("Changed String:", str2) Output Actual String: KRISHNA YADAV Apply: str1 = str1[:7] + 'MURARI ' + str1[7:] Changed String: KRISHNA MURARI YADAV Actual String: KRISHNA YADAV Apply: str2.replace(' ', ' MURARI ') Changed String: KRISHNA MURARI YADAV [/code]
इस Example के अनुसार हमने दो तरीकों से एक String को Change किया है। पहले तरीके में हमने Slicing को Use किया है, जबकि दूसरे तरीके में हमने replace() Method को Use किया है। Slicing वाले तरीके में सबसे पहले हमने String ‘KRISHNA YADAV’ से Substring ‘KRISHNA ‘ Blank Space तक को srt1[:8] Slicing Expression का प्रयोग करते हुए Slice कर लिया है। जिसके परिणामस्वरूप जो नया String Create होता है, उसकी शुरूआत में ‘KRISHNA ‘ होता है जिसके अन्त में एक Blank Space होता है।
फिर इसके Just बाद में हमने Plus (+) Operator का प्रयोग करते हुए Raw String ‘MURARI’ को Concatenate कर लिया है। परिणामस्वरूप अब हमारे Newly Created String Object में Substring ‘KRISHNA ‘ के बाद String Object ‘MURARI’ Append हो जाता है। जिसके फलस्वरूप पूरा String ‘KRISHNA MURARI’ Create हो जाता है।
और फिर अन्त में हमने फिर से String Object str1 के Blank Space से आगे अन्त तक की Substring को str1[:7] Expression का प्रयोग करते हुए Extract कर लिया है, जिसके परिणामस्वरूप हमें Blank Space सहित Substring ‘ YADAV’ प्राप्त हो जाता है और इस String को पहले से Created ‘KRISHNA MURARI’ String के अन्त में Concatenate कर दिया जिसके फलस्वरूप हमें Final String Object ‘KRISHNA MURARI YADAV’ प्राप्त हो जाता है।
इस तरह से Slicing का प्रयोग करते हुए हम किसी भी String में नया Text Content Add, Insert या Delete करते हुए नया String Object Create कर सकते हैं और उस Newly Created String Object का Reference फिर से str1 Object को Set करके str1 द्वारा एक नई Modified String को Reference करवा सकते हैं।
जबकि दूसरे तरीके में हमने इसी काम को replace() Method का प्रयोग करते हुए किया है। यानी हमने replace() Method में Source Parameter के रूप में ‘ ‘ Blank Space Specify कर दिया है और Target Parameter के रूप में String ‘ MURARI ‘ को Specify कर दिया है जिसके दोनों ओर Blank Space है।
फलस्वरूप जब ये replace() Method Execute होता है, तो str2 में जहां भी Blank Space Character होता है, वहां पर Target String ‘ MURARI ‘ को Replace कर दिया जाता है। चूंकि हमारे Current Example के str2 में केवल एक ही Blank Space है, इसलिए Blank Space के स्थान पर String ‘ MURARI ‘ Replace हो जाने के बाद हमें वही Output String प्राप्त हो जाता है, जो Slicing तरीके से प्राप्त हुआ था।
Python हमें find() नाम का Method भी Provide करता है, जिसका प्रयोग करके हम किसी String में किसी अन्य Substring की Index Position को Return कर सकते हैं। जब Search किया जाने वाला Substring, String में Exist होता है, तो find() Method उस Substring की Location को Return करता है जबकि यदि Substring, String में Exist न हो, तो उस स्थिति में find() Method -1 Return करता है।
find() Method को उस Object के साथ Invoke किया जाता है, जिसमें मुख्य String होता है और जिस Substring को इस मुख्य String में Search करना होता है, उस Substring को find() Method में Parameter की तरह Pass किया जाता है। इस Find and Replace प्रक्रिया को ठीक से समझने के लिए हम निम्न Example Program देख सकते हैं-
[code] FileName: FindAndReplaceMethod.py # Find and Replace using Slicing str1 = "KRISHNA KUMAR YADAV" print("Actual String:", str1) whereIs = str1.find('KUMAR') print("Location of String 'KUMAR':", whereIs) print("Replace 'KUMAR' with 'MURARI' using Slicing") str1 = str1[:whereIs] + 'MURARI' + str1[(whereIs+5):] print("Find and Replace using Slicing:", str1) print() # Find and Replace using replace() str2 = "KRISHNA KUMAR YADAV" print("Actual String:", str2) print("Replace 'KUMAR' with 'MURARI' using replace()") str2 = str2.replace('KUMAR', 'MURARI', 1) print("Find and Replace using replace():", str2) Output Actual String: KRISHNA KUMAR YADAV Location of String 'KUMAR': 8 Replace 'KUMAR' with 'MURARI' using Slicing Find and Replace using Slicing: KRISHNA MURARI YADAV Actual String: KRISHNA KUMAR YADAV Replace 'KUMAR' with 'MURARI' using replace() Find and Replace using replace(): KRISHNA MURARI YADAV [/code]
इस Example में हमने str1 में Exist String में Substring ‘KUMAR’ की Index Position को Find करने के लिए find() Method को Use किया है और फिर उस Index Position को Slicing करने के लिए निम्नानुसार तरीके से Use किया है-
str1 = str1[:whereIs] + ‘MURARI’ + str1[(whereIs+5):]
जहां whereIs Variable में Substring ‘KUMAR’ का Beginning Index Position का Number है जो कि 8 है। इसलिए इस Expression में Index Position 8 से Just आगे एक नया String ‘MURARI’ Concatenate किया है और उसके बाद फिर से str1 में Exist अन्तिम शब्द ‘YADAV’ को Concatenate करने के लिए हमने str1[(whereIs+5):] जहां whereIs में मान 8 है और Replaced String ‘KUMAR’ में कुल Characters की संख्या 5 है।
इसलिए इसके Extraction के बाद हमें str1[8+5:] यानी str1[13:] प्राप्त होता है। यानी Python, ‘MURARI’ String को Concatenate करने के बाद Substring str1 में से Index Number 13 से अन्त तक की String को Return करता है जो कि Substring ‘YADAV’ है।
परिणामस्वरूप जब Python इस पूरे Expression को Execute करके str1 में Stored Final String को Display करता है, तो हमें Original String ‘KRISHNA KUMAR YADAV’ के स्थान पर Changed String ‘KRISHNA MURARI YADAV’ प्राप्त होता है।
ठीक इसी जरूरत को हम बड़ी ही आसानी से replace() Method द्वारा भी Fulfil कर सकते हैं। लेकिन इस Example में हमने replace() Method में एक तीसरा Parameter भी Specify किया है, जिसका मान 1 है और ये तीसरा Parameter Python को इस बात का Instruction देता है कि Search होने वाली Substring को Actual String में अधिकतम कितनी बार तक Replace करना है।
चूंकि हमने यहां मान 1 Specify किया है, जिसका मतलब ये है कि हम Source Substring को केवल 1 बार Replace करना चाहते हैं। जबकि यदि हम इस तीसरे Parameter को Specify न करें, तो पूरी String में जितनी बार भी Source String Exist होगा, वो हर Source String, Target String से Replace हो जाएगा।
हम चाहे Slicing करते हुए Replacement करें चाहे replace() Method का प्रयोग करते हुए, हमें जो Modified String Return होता है, वो Newly Created String होता है। यानी ये दोनों ही तरीके Actual String को Modify नहीं करते, बल्कि एक नया String Create करते हैं और Variable को उस नए String Object के Reference से Set करते हुए Actual String की Memory को Release कर देते हैं।
जब हमें किसी String में बहुत ज्यादा Changes करने होते हैं, तब उस String पर सभी Operations Perform करने पर Program की Performance बहुत प्रभावित होती है। इसलिए उस स्थिति में बेहतर यही होता है कि इस तरह की String को पहले Object में Convert कर लिया जाए और उस सभी String Operations उस Object पर Apply किए जाऐं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Python in Hindi | Page: 602 | Format: PDF