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

পাইথনে রেজেক্স ব্যবহার করে ইমেইল এক্সট্রাক্ট করা


সমস্যা

একটি টেক্সট বা ফাইল থেকে সব ইমেইল ঠিকানা বের করা।

রেজেক্স প্যাটার্ন

r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+"

এই প্যাটার্নটি সাধারণ ইমেইল ফরম্যাট ম্যাচ করে (লোকাল-পার্ট @ ডোমেন)।

উদাহরণ কোড

import re

my_text = ("Please contact us at contact@tutorialspoint.com for further information. "
           "You can also give feedback at feedback@tutorialspoint.com")

# findall() দিয়ে সব ম্যাচ বের করা
my_emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", my_text, re.IGNORECASE)

print(my_emails)
# আউটপুট: ['contact@tutorialspoint.com', 'feedback@tutorialspoint.com']

ফাইল থেকে ইমেইল এক্সট্রাক্ট

import re

def extract_emails_from_file(filepath):
    with open(filepath, 'r', encoding='utf-8') as f:
        content = f.read()
    
    pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
    emails = re.findall(pattern, content)
    return emails

# ব্যবহার
emails = extract_emails_from_file("data.txt")
print(emails)

প্যাটার্ন ব্যাখ্যা

অংশঅর্থ
[a-zA-Z0-9._%+-]+লোকাল পার্ট: অক্ষর, সংখ্যা, ডট, আন্ডারস্কোর, পার্সেন্ট, প্লাস, হাইফেন
@এট সাইন
[a-zA-Z0-9.-]+ডোমেন নাম
\.ডট (ইস্কেপ করা)
[a-zA-Z]{2,}টপ-লেভেল ডোমেন (কমপক্ষে ২ অক্ষর)

সীমাবদ্ধতা

এই রেজেক্স সব রFC-কম্প্লায়েন্ট ইমেইল কভার করে না (যেমন quoted local part, IP ডোমেন ইত্যাদি)। প্রোডাকশনে email-validator লাইব্রেরি ব্যবহার করুন।

  1. পাইথনে PDF থেকে হাইপারলিংক এক্সট্র্যাক্ট করা

  2. পাইথন প্রোগ্রামে টেক্সট ফাইল পড়া এবং লেখা

  3. পাইথনে অনুরোধ লাইব্রেরি ব্যবহার করে ওয়েব থেকে ফাইল ডাউনলোড করা

  4. পাইথনে OpenCV ব্যবহার করে ভিডিও থেকে ফ্রেম এক্সট্রাক্ট করা