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