সমস্যা
আপনি একটি স্ট্রিং-এ একটি পাঠ্য প্যাটার্ন অনুসন্ধান এবং প্রতিস্থাপন করতে চান৷
৷যদি আমাদের একটি খুব সাধারণ আক্ষরিক নিদর্শন থাকে, তাহলে str.replace() পদ্ধতি ব্যবহার করা একটি সর্বোত্তম সমাধান।
উদাহরণ
def sample():yield 'Is'yield 'USA'yield 'Colder'yield 'Than'yield 'Canada?'text ='.join(sample())print(f"Output \n {text} ")
আউটপুট
কানাডার চেয়ে মার্কিন যুক্তরাষ্ট্র কি শীতল?
আসুন প্রথমে দেখি কিভাবে একটি টেক্সট সার্চ করা যায়।
#টি সঠিক টেক্সটপ্রিন্টের জন্য অনুসন্ধান(f"আউটপুট \n {text =='USA'}")
আউটপুট
মিথ্যা
আমরা মৌলিক স্ট্রিং পদ্ধতি ব্যবহার করে পাঠ্য অনুসন্ধান করতে পারি, যেমন str.find(), str.endswith(), str.startswith().
# text start withprint(f"আউটপুট \n {text.startswith('Is')}")
আউটপুট
সত্য
#টি পাঠ্য মুদ্রণের সাথে শেষ হয় (f"আউটপুট \n {text.startswith('Is')}")
আউটপুট
সত্য
ফাইন্ডপ্রিন্ট সহ #টি অনুসন্ধান পাঠ্য(f"আউটপুট \n {text.find('USA')}")
আউটপুট
3
যদি অনুসন্ধানের জন্য ইনপুট পাঠ্যটি আরও জটিল হয় তবে আমরা রেগুলার এক্সপ্রেশন এবং রি মডিউল ব্যবহার করতে পারি।
# আসুন স্ট্রিং ফরম্যাটেডে একটি তারিখ তৈরি করি ='22/10/2020'
# আসুন পরীক্ষা করে দেখি যে টেক্সটে 1 ডিজিটের বেশি আছে কিনা। # \d+ - এক বা একাধিক ডিজিটের সাথে মিল করুন। )else:প্রিন্ট('না')হ্যাঁ
এখন, একটি টেক্সট প্রতিস্থাপন ফিরে আসছে. যদি টেক্সট এবং প্রতিস্থাপন করা স্ট্রিং সহজ হয় তাহলে str.replace().
ব্যবহার করুনআউটপুট
মুদ্রণ(f"আউটপুট \n {text.replace('USA', 'Australia')}")
আউটপুট
অস্ট্রেলিয়া কি কানাডার চেয়ে ঠান্ডা?
যদি অনুসন্ধান এবং প্রতিস্থাপনের জন্য জটিল প্যাটার্ন থাকে তবে আমরা পুনরায় মডিউলে সাব() পদ্ধতিগুলি ব্যবহার করতে পারি।
সাব() এর প্রথম আর্গুমেন্ট হল প্যাটার্ন যা মিলবে এবং দ্বিতীয় আর্গুমেন্ট হল প্রতিস্থাপন প্যাটার্ন।
নীচের উদাহরণে, আমরা তারিখের ক্ষেত্রগুলি dd/mm/yyyy-এ খুঁজে পাব এবং তাদের বিন্যাসে প্রতিস্থাপন করব - yyyy-dd-mm। ব্যাকস্ল্যাশ করা সংখ্যা যেমন \3 প্যাটার্নে গ্রুপ নম্বর ক্যাপচার করার জন্য উল্লেখ করুন
ইম্পোর্ট রিসেন্টেন্স ='তারিখ হল 22/11/2020। আগামীকাল 23/11/2020।'# sentencereplaced_text =re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', বাক্য)মুদ্রণ( f"আউটপুট \n {replaced_text}")
আউটপুট
<পূর্ব>তারিখ হল 2020-22-11। আগামীকাল 2020-23-11।করার আরেকটি উপায় হল ভাল পারফরম্যান্স পেতে প্রথমে অভিব্যক্তি কম্পাইল করা।
আউটপুট
pattern =re.compile(r'(\d+)/(\d+)/(\d+)')প্রতিস্থাপিত_pattern =pattern.sub(r'\3-\1-\2', বাক্য)মুদ্রণ(f) "আউটপুট \n {replaced_pattern}")
আউটপুট
<পূর্ব>তারিখ হল 2020-22-11। আগামীকাল 2020-23-11।re.subn() টেক্সট প্রতিস্থাপনের সাথে আমাদের প্রতিস্থাপনের সংখ্যা দেবে।
আউটপুট
আউটপুট, গণনা =pattern.subn(r'\3-\1-\2', বাক্য)মুদ্রণ(f"Output \n {output}")
আউটপুট
<পূর্ব>তারিখ হল 2020-22-11। আগামীকাল 2020-23-11।আউটপুট
মুদ্রণ(f"আউটপুট \n {count}")
আউটপুট
2