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