
روز ۴۰ آموزش پایتون: پروژه بررسی ایمیلها و شمارهها با Regex
در دنیای واقعی برنامه نویسی، مدیریت دادههای ورودی کاربران یکی از مهمترین بخشها است و یکی از رایجترین مشکلات، بررسی صحت ایمیلها و شماره تلفنها است. در پروژه امروز از Regular Expressions برای طراحی برنامهای استفاده میکنیم که بتواند ایمیلها و شمارههای تلفن را از متن ورودی استخراج کند و صحت آنها را بررسی نماید. این پروژه ترکیبی از مفاهیم قبلی مانند کار با رشتهها، توابع، شرطها و ماژول re است و به شما کمک میکند مهارت خود را در پردازش متن و اعتبارسنجی دادهها تثبیت کنید. برنامهای که میسازیم میتواند برای فرمهای ثبتنام، تحلیل متن و پاکسازی دادهها در پروژههای واقعی بسیار کاربردی باشد.
طراحی برنامه و ساختار
ابتدا باید ماژول re را وارد کنیم و سپس توابعی برای اعتبارسنجی ایمیل و شماره تلفن تعریف کنیم. هر تابع با استفاده از الگوهای منظم (Regex) بررسی میکند که ورودی مطابقت دارد یا خیر. همچنین برنامه قابلیت دریافت چند ورودی و پردازش لیست دادهها را دارد تا بتوانیم در پروژههای بزرگتر از آن استفاده کنیم. طراحی برنامه به گونهای است که اگر ورودی نامعتبر باشد، پیام مناسب به کاربر نمایش داده شود و اگر ورودی معتبر باشد، در خروجی نمایش داده میشود. این طراحی باعث میشود برنامه خوانا، حرفهای و مقیاسپذیر باشد.
نمونه کد تعریف توابع اعتبارسنجی:
import re
def validate_email(email):
pattern = r'\b[\w.-]+@[\w.-]+\.\w{2,4}\b'
if re.match(pattern, email):
return True
return False
def validate_phone(phone):
pattern = r'^09\d{9}$'
if re.match(pattern, phone):
return True
return Falseدر این بخش دو تابع تعریف شده است که با استفاده از الگوهای مشخص، ورودی را بررسی میکنند. تابع validate_email هر رشتهای که شبیه ایمیل باشد شناسایی میکند و تابع validate_phone شماره تلفنهایی را که با 09 شروع میشوند و دقیقاً ۱۱ رقم دارند، تأیید میکند.
دریافت و پردازش ورودیها
پس از تعریف توابع، برنامه قادر است چند ورودی را به صورت لیست دریافت کند و برای هر ورودی، بررسی صحت انجام دهد. این بخش از برنامه اهمیت زیادی دارد زیرا اغلب دادهها به صورت دستهای پردازش میشوند و باید امکان اجرای سریع و بدون خطا برای چندین ورودی فراهم باشد. همچنین میتوان خروجی معتبر و نامعتبر را جداگانه ذخیره کرد یا نمایش داد تا تحلیل دادهها سادهتر شود. این روش در پروژههای بزرگ مثل فرمهای آنلاین یا تحلیل فایلهای متنی حجیم کاربرد فراوان دارد.
نمونه کد دریافت لیست ورودی:
emails = ["user@example.com", "invalid-email@", "admin@test.org"]
phones = ["09123456789", "0987654321", "09112223344"]
for email in emails:
if validate_email(email):
print(f"ایمیل معتبر: {email}")
else:
print(f"ایمیل نامعتبر: {email}")
for phone in phones:
if validate_phone(phone):
print(f"شماره معتبر: {phone}")
else:
print(f"شماره نامعتبر: {phone}")در این مثال، لیست ایمیلها و شمارهها بررسی میشود و نتیجه هر کدام به کاربر اعلام میگردد. توجه داشته باشید که با استفاده از تابع و Regex، برنامه بسیار منعطف و قابل توسعه باقی میماند.
افزودن قابلیت ذخیرهسازی و گزارشگیری
برای پروژه واقعی، میتوان نتایج بررسی را در فایل متنی یا JSON ذخیره کرد تا در آینده بتوان گزارش تولید کرد یا دادهها را برای آنالیز بیشتر آماده نمود. این قابلیت باعث میشود برنامه نه تنها ابزاری برای اعتبارسنجی باشد، بلکه یک سیستم مدیریت داده ساده هم باشد. ترکیب Regex با عملیات روی فایل، شما را برای پروژههای پیچیدهتر و کار با دادههای واقعی آماده میکند.
نمونه کد ذخیره خروجی:
import json
results = {"emails": [], "phones": []}
for email in emails:
results["emails"].append({"email": email, "valid": validate_email(email)})
for phone in phones:
results["phones"].append({"phone": phone, "valid": validate_phone(phone)})
with open("validation_results.json", "w") as f:
json.dump(results, f, indent=4)در این بخش، نتایج بررسی به صورت JSON ذخیره میشود و با indent مناسب، فایل خوانا و آماده پردازشهای بعدی است. این کار امکان تولید گزارش و استفاده مجدد از دادهها را فراهم میکند.
جمعبندی و تمرین عملی
در پروژه روز ۴۰، یاد گرفتیم چگونه با ترکیب Regex، توابع، شرطها، و کار با لیستها یک برنامه کاربردی برای بررسی ایمیلها و شماره تلفنها بسازیم. این پروژه به شما مهارت عملی در پردازش دادههای واقعی، اعتبارسنجی ورودیها و مدیریت خروجیها میدهد. توصیه میشود این پروژه را توسعه دهید، قابلیتهای بیشتری مانند حذف دادههای نامعتبر، ارسال گزارش، یا پردازش فایلهای متنی بزرگ به آن اضافه کنید. با تسلط بر این مهارت، شما میتوانید فرمهای ثبتنام، فایلهای لاگ و سایر دادههای متنی را به شکل حرفهای مدیریت کنید.
