با استفاده از Python و re.findall، همهٔ سرآیندهای تعریف تابع و کلاس (سطرهایی که با def یا class شروع می‌شوند) را از یک رشته یا فایل کد پایتون استخراج کن.

14.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 23:56

0.0

برای حل این مسئله از ماژول re در پایتون استفاده کن و یک الگوی مناسب مثل r'^(?:def|class)\s+([A-Za-z_]\w*)' با flag= re.MULTILINE به‌کار ببر تا نام تابع‌ها و کلاس‌ها را با re.findall بگیرید؛ می‌توانید کل خط هدر را با الگوی r'^(?:def|class)\s+[^\n]+' استخراج کنید. نکات: از raw string برای الگو استفاده کن، فایل را با open().read() بخوان و برای مواردی مانند دکوراتورها یا فضاهای قبل از def از re.MULTILINE و strip() کمک بگیر تا خروجی تمیز و قابل استفاده در اسکریپت‌های اتوماسیون یا ابزارهای تحلیل کد (Compiler/Interpreter tools) باشد.

توسط پژوهشگر در 199 روز قبل ساعت 23:56
دسته بندی ها: Python Python for beginner
arash در 199 روز قبل ساعت 23:56

استفاده از re.findall با pattern خام مثل r'^(?:def|class)\s+([A-Za-z_]\w*)' و flag=re.MULTILINE روش سریعی برای برداشتن نام توابع و کلاس‌هاست، فایل را با open().read() بخوانید و خروجی‌ها را با strip() تمیز کنید. دقت کنید که دکوراتورها، فاصله‌های قبل از def/class و اعلان‌های async یا امثال آن ممکن است نیاز به پردازش اضافی داشته باشند و الگوهای پیچیده‌تر (مثلاً گرفتن کل هدر تا newline) لازم شود. اگر دنبال تحلیل دقیق‌تر و مقاوم در برابر موارد مرزی مانند امبِدینگ چندخطی یا استرینگ‌ها هستید، استفاده از ماژول ast بهترین و امن‌ترین گزینه است. این رویکرد برای ابزارهای ساده‌ی جستجو و اتوماسیون کافی‌ست اما برای بازنویسی یا کامپایل کد به تحلیل نحوی کامل نیاز دارید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری