متودها در پایتون

متودهای مدیریت رشته پایتون | ()maketrans

آشنایی با متود ()maketrans در پایتون

متود ()maketrans در پایتون

متودهای مدیریت رشته پایتون | ()maketrans

برای دریافت جدیدترین نسخه زبان برنامه نویسی پایتون به وبسایت رسمی پایتون بروید.

همانطور که قبلا گفته شد زبان پایتون توابع و متود‌های زیادی بصورت از پیش تعریف شده یا داخلی ( Built-in ) در خود دارد. که هر کدام از آنها کارایی و کاربرد خاص خود را دارند. و وظایف مشخصی را در یک برنامه انجام می‌دهند. در این مجموعه آموزش بصورت اختصاصی به آموزش ، بررسی و آشنایی با نحوه عملکرد متودهای مربوط به کنترل و مدیریت رشته‌ها با ذکر مثال‌های مختلف در پایتون خواهیم پرداخت. و سعی خواهیم کرد با زبانی ساده و قابل درک یک به یک توابع و متود‌های مربوط به رشته‌ها را مورد بررسی قرار دهیم.


متود ()maketrans  یک فهرست نگاشتی ( Mapping Table ) از رشته که قابل استفاده در متود ()translate نیز هست را برمی‌گرداند.
به زبان ساده تر این متود یک روش استاتیک است که عملیات مپینگ (نگاشت) را بصورت یک به یک برای هر کاراکتر اجرا می‌کند و یک ترجمه یا جایگزین برای آن می‌سازد.
شاید درک این موضوع کمی سر در گم کننده و مبهم به نظر بیاید ولی با بیان چند مثال براحتی متوجه نحوه عملکرد این متود خواهید شد.

پارامترهای ()maketrans

متود ()maketrans سه پارامتر x و y و z را به عنوان آرگومان می‌پذیرد. تعیین مقدار پارمتر x اجباری ولی تخصیص مقدار به پارامترهای y و z اختیاری است.

پارامتر x : اگر فقط یک پارامتر به عنوان آرگومان داده شود حتما باید از نوع داده‌ای دیکشنری Dictionary باشد. باید توجه داشت که دیکشنری باید شامل نگاشت 1 به 1 از یک تک کاراکتر یا اینکه عدد یونیکد متناظر آن کاراکتر برای ترجمه‌اش باشد.

پارامتر y : اگر دو پارامتر بعنوان آرگومان داده شود باید دو رشته با تعداد کاراکتر و طول یکسان باشند. در واقع هر کاراکتر در رشته اولی بعنوان جایگزین در ایندکس متناظر در رشته دوم است.

پارامتر z : اگر سه آرگومان داده شود ، آرگومان سوم همه کاراکترهای موجود مپ شده را بصورت None ریست کرده و همچنین عملیات مپینگ جدید را برای کاراکترهای ناموجود می‌سازد.

سینتکس ()maketrans

پیشنهاد می شود این مطلب را هم بخوانید: آشنایی کامل با متودهای رشته در پایتون

در واقع متود ()maketrans یک مقدار یونیکد از هر کاراکتر را برای ترجمه آن می‌سازد. در اینجا منظور از ترجمه به معنای تحت‌الفظی آن نیست بلکه انتساب مقداری متناظر و جایگزین برای یک کاراکتر است.
هنگامی که عملیات نگاشت ترجمه ( Translation Mapping ) انجام شد مقدار اصلی با مقدار ترجمه شده آن در زمان استفاده از متود ()translate جایگزین می‌شود.

متود ()maketrans با یک آرگومان ورودی

 

در مثال زیر متود فقط یک آرگومان می‌گیرد در نتیجه از دیکشنری استفاده شده است.

خروجی:

تا حدودی با مفهوم نگاشت ترجمه آشنایی پیدا کردیم و فهمیدیم که ترجمه در واقع ایجاد یک مقدار جایگزین برای یک کاراکتر جهت استفاده در جایی دیگر است.
همانطور که گفته شد کاراکترهای ترجمه شده در قالب یک جدول نگاشتی قابلیت استفاده در متود ()translate را دارا هستند.
در ادامه قصد داریم یک ماجراجویی انجام دهیم و موضوع را کمی پیچیده تر کنیم و با استفاده از متود ()maketrans کاراکترها را مپ کرده و برای کدگذاری کلمه abbas با استفاده از متود ()translate استفاده کنیم .

به مثال توجه کنید :

خروجی:

متود ()maketrans با دو آرگومان ورودی

 

زمانی که قرار است دو آرگومان به متود داده شود ضروریست که در دو رشته جداگانه ولی با طول یکسان باشد. به مثال زیر توجه کنید:

خروجی مثال بالا:

قبل از اینکه کد بالا را آنالیز کنیم لازم است عدد دسیمال حروف کوچک انگلیسی را بدانیم . در کادر زیر معادل دسیمال  هر حرف مقابل آن وارد شده است.

در مثال بالا دو رشته string1 و string2 با طول یکسان تعریف شده و با این عمل ترجمه جایگزین ساخته می‌شود. در واقع اجرای این کد عملیات مپینگ را بصورت منظم از هر کاراکتر در string1 برای کاراکتر متناظر (هم ایندکس) در string2 می‌سازد.

در مرحله اول، عملیات مپینک از رشته "abc" با مقادیر دسیمال a:97 b:98 c:99 برای رشته "nop" با مقادیر n:110 o:111 p:112 اجرا می‌شود.
نتیجه این عملیات داخل یک دیکشنری بصورت {112: 99, 111: 98, 110: 97} در حافظه پایتون نگه داشته می‌شود در واقع پایتون با اینکار مقادیر جدید a:110 b:111 c:112 را می‌سازد.
در ادامه رشته "abc" با مقادیر جدید به رشته "xyz"  با مقادیر x:120 y:121 z: 122 مپ می‌شود و نتیجه آن در یک دیکشنری بصورت {110: 120, 111: 121, 112: 122} در خروجی برگردانده می‌شود.

اگر طول دو رشته با هم برابر نباشد پایتون یک پیغام خطا با موضوع اینکه طول رشته اول و دوم باید برابر باشد بصورت ValueError: the first two maketrans arguments must have equal length ایجاد می‌کند.

به مثال زیر توجه کنید:

خروجی:

 

پیشنهاد می شود این مطلب را هم بخوانید: متودهای مدیریت رشته پایتون | ()lstrip

متود ()maketrans با سه آرگومان ورودی

 

همانطور که قبلا گفتیم اگر سه آرگومان به متود داده شود ، آرگومان سوم همه کاراکترهای موجود مپ شده را بصورت None ریست کرده و همچنین عملیات مپینگ جدید را برای کاراکترهای ناموجود می‌سازد.

به مثال زیر توجه کنید:

خروجی:

در مثال بالا ابتدا عملیات مپینگ برای رشته های "nop" و "qrs" انجام می‌گیرد و ترجمه جایگزین ساخته می‌شود.
در ادامه آرگومان سوم که همان string3 = "nor" است کاراکترهای مپ شده قبلی را در صورت موجود بودن به None ریست می‌کند .
در اینجا کارکترهای n و o چون قبلا مپ شده اند به None ریست می‌شوند، کاراکتر p در آرگومان سوم وجود ندارد در نتیجه مپینگ جدید برای آن ساخته می‌شود.  همچنین کاراکتر r موجود در آرگومان سوم به None ریست می‌شود.

متودهای مدیریت رشته پایتون | ()maketrans

برچسب ها
نمایش بیشتر

میثم پورواحدی

خوشحالم که با جدیت در حال پروراندن رویایم هستم. گیسوم‌طرح برایم فقط یک رویا نیست ، یک دوست خوب و یک معلم فوقالعادست...

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا
بستن
بستن