ماژول Tokenize یک اسکنر واژگانی برای کد منبع پایتون ، که در پایتون اجرا شده است ، فراهم می کند. اسکنر موجود در این ماژول نظرات خود را به عنوان نشانه ها باز می گرداند ، و این امر را برای اجرای "چاپگرهای زیبا" ، از جمله رنگ کننده های نمایشگر روی صفحه نمایش مفید می کند.
برای ساده کردن کنترل جریان توکن ، تمام نشانه های اپراتور و تعیین کننده و بیضوی با استفاده از نوع توکین عمومی OP بازگردانده می شوند. نوع دقیق را می توان با بررسی ویژگی دقیق_type در Tuple نامگذاری شده از Tokenize. tokenize () تعیین کرد.
نشانه گذاری ورودی ¶
نقطه ورود اولیه یک ژنراتور است:
نشانه گذاریTokenize (readline)
ژنراتور Tokenize () به یک آرگومان نیاز دارد ، readline ، که باید یک شیء قابل تماس باشد که همان رابط کاربری با روش io.iobase. readline () اشیاء پرونده را فراهم می کند. هر تماس به عملکرد باید یک خط ورودی را به عنوان بایت برگرداند.
ژنراتور با این اعضا 5 عکس تولید می کند: نوع توکن ؛رشته توکن ؛یک TUPLE (SROW ، SCOL) INTS که ردیف و ستون را که نشانه در منبع شروع می شود ، مشخص می کند. یک 2-TUPLE (EROW ، ECOL) از INTS که ردیف و ستون را مشخص می کند که توکن در منبع به پایان می رسد. و خطی که روی آن پیدا شد. خط گذشت (آخرین مورد tuple) خط فیزیکی است. 5 Tuple به عنوان یک Tuple نامگذاری شده با نام فیلدها برگردانده می شود: خط پایان String String.
Tuple به نام برگشتی دارای یک ویژگی اضافی به نام Exact_Type است که حاوی نوع عملگر دقیق برای نشانه های OP است. برای همه انواع دیگر TOKEN EXACT_TYPE برابر با قسمت Tuple Type نامگذاری شده است.
در نسخه 3. 1 تغییر یافته است: پشتیبانی اضافه شده برای Tuples نامگذاری شده.
در نسخه 3. 3 تغییر یافته است: پشتیبانی اضافه شده برای Exact_Type.
طبق گفته PEP 263 ، Tokenize () رمزگذاری منبع پرونده را با جستجوی یک بمب UTF-8 یا رمزگذاری کوکی تعیین می کند.
نشانه گذاریgenerate_tokens (readline)
به جای بایت ، یک منبع خواندن رشته های یونیکد را نشان می دهد.
مانند Tokenize () ، آرگومان readline یک تماس قابل تماس با یک خط ورودی است. با این حال ، GETERATE_TOKENS () انتظار دارد که readline به جای بایت یک شیء STR را برگرداند.
نتیجه یک تکرار کننده به نام Tuples ، دقیقاً مانند Tokenize () است. این یک نشانه رمزگذاری را به همراه ندارد.
تمام ثابت های ماژول توکن نیز از Tokenize صادر می شوند.
عملکرد دیگری برای معکوس کردن فرآیند توکن سازی ارائه شده است. این برای ایجاد ابزارهایی که یک اسکریپت را نشانه گذاری می کنند ، جریان توکن را تغییر داده و اسکریپت اصلاح شده را دوباره می نویسید.
نشانه گذاریبدون استفاده (قابل تکرار)
نشانه ها را به کد منبع پایتون تبدیل می کند. تکرار باید توالی های حداقل با دو عنصر ، نوع توکن و رشته توکن را برگرداند. هر عنصر توالی اضافی نادیده گرفته می شود.
اسکریپت بازسازی شده به عنوان یک رشته واحد بازگردانده می شود. نتیجه تضمین شده است که به عقب برگردد تا با ورودی مطابقت داشته باشد تا تبدیل بی ضرر باشد و از سفرهای دور اطمینان حاصل شود. ضمانت فقط برای نوع توکن و رشته توکن اعمال می شود زیرا ممکن است فاصله بین نشانه ها (موقعیت ستون) تغییر کند.
این بایت ها را با استفاده از نشانه رمزگذاری رمزگذاری می کند ، که اولین خروجی توالی توکن توسط Tokenize () است. اگر هیچ نشانه رمزگذاری در ورودی وجود نداشته باشد ، به جای آن یک STR را برمی گرداند.
Tokenize () باید رمزگذاری پرونده های منبعی را که آن را نشانه گذاری می کند ، تشخیص دهد. عملکردی که برای انجام این کار استفاده می کند در دسترس است:
نشانه گذاریDETECT_ENCODING (readline)
تابع Detect_Encoding () برای تشخیص رمزگذاری که باید برای رمزگشایی یک فایل منبع پایتون استفاده شود ، استفاده می شود. به یک آرگومان نیاز دارد ، به همان روشی که ژنراتور Tokenize () را نشان می دهد.
این حداکثر دو بار با خواندن تماس می گیرد و رمزگذاری استفاده شده (به عنوان یک رشته) و لیستی از هر خط (که از بایت رمزگشایی نشده است) که در آن خوانده نشده است.
رمزگذاری را از حضور یک بمب UTF-8 یا یک کوکی رمزگذاری شده همانطور که در PEP 263 مشخص شده است ، تشخیص می دهد. اگر هم یک بم و هم کوکی وجود داشته باشد ، اما مخالف هستند ، یک syntaxerror مطرح می شود. توجه داشته باشید که در صورت یافتن بمب ، "UTF-8-SIG" به عنوان رمزگذاری بازگردانده می شود.
اگر رمزگذاری مشخص نشده باشد ، پیش فرض "UTF-8" بازگردانده می شود.
برای باز کردن پرونده های منبع Python از Open () استفاده کنید: از Detect_Encoding () برای تشخیص رمزگذاری پرونده استفاده می کند.
نشانه گذاریباز (نام پرونده)
با استفاده از رمزگذاری شناسایی شده توسط DETECT_ENCODING () یک پرونده را در حالت Read Only باز کنید.
جدید در نسخه 3. 2.
مطرح شده هنگامی که یک docstring یا بیان که ممکن است در چندین خط تقسیم شود ، در هیچ کجای پرونده تکمیل نمی شود ، به عنوان مثال:
توجه داشته باشید که رشته های تک لایه بدون چربی باعث ایجاد خطایی نمی شوند. آنها به عنوان errortoken نشانه گذاری می شوند و به دنبال آن نشان می دهند که محتویات آنها است.
استفاده از خط فرمان ¶ ¶
جدید در نسخه 3. 3.
ماژول Tokenize می تواند به عنوان یک اسکریپت از خط فرمان اجرا شود. به همین سادگی است:
گزینه های زیر پذیرفته شده است:
این پیام راهنما را نشان دهید و از آن خارج شوید
نمایش نامهای توکن با استفاده از نوع دقیق
در صورت مشخص شدن filename. py ، محتویات آن به stdout نشان داده می شود. در غیر این صورت ، توکن سازی بر روی stdin انجام می شود.
مثال ها¶
نمونه ای از بازنویسی اسکریپت که به معنای واقعی کلمه شناور به اشیاء اعشاری تبدیل می شود:
نمونه ای از نشانه گذاری از خط فرمان. فیلمنامه:
به خروجی زیر که ستون اول دامنه مختصات خط/ستون است که در آن نشانه یافت می شود ، نشانه گذاری می شود ، ستون دوم نام توکن است و ستون نهایی مقدار توکن است (در صورت وجود)
نام های Token Type را می توان با استفاده از گزین ه-e نمایش داد:
نمونه ای از نشانه گذاری یک فایل به صورت برنامه ای ، خواندن رشته های یونیکد به جای بایت با generate_tokens ():
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید
برچسب :
نویسنده : آرش اصل زاد
بازدید : <-PostHit->
تاريخ : پنجشنبه
7 ارديبهشت
1402 ساعت: 15:05