কম্পিউটার টিউটোরিয়াল

পাইথনে টেক্সট সার্চ এবং রিপ্লেস করার পদ্ধতি

সমস্যা

আপনি একটি স্ট্রিং-এ টেক্সট প্যাটার্ন সার্চ করে রিপ্লেস করতে চান।

যদি খুব সাধারণ লিটারেল প্যাটার্ন হয়, তবে 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
  1. পাইথন প্লটের বাইরে টেক্সট রাখা

  2. পাইথনে লেবেল (Label) থেকে টেক্সট রিমুভ করা

  3. উইন্ডোজ ১০-এ নোটপ্যাডে টেক্সট খুঁজে বের করুন ও প্রতিস্থাপন করুন

  4. Chrome এবং Firefox-এ টেক্সট খুঁজে বের করুন ও প্রতিস্থাপন করুন