آشنایی با متد translate در پایتون

آشنایی با متد translate در پایتونسلام رفقا ??‍♀️??‍♀️امیدوارم حالتون خوب باشه. چند روز پیش تو یکی از گروهای برنامه نویسی که عضو هستم یکی از دوستان در مورد متد translate سوال پرسیدند و من به همین مناسبت تصمیم گرفتم که یه پست در مورد این موضوع هم برای شما و هم برای گروه برنامه نویسی پایتون که داخلش عضو هستم آماده کنم ?. خب اگه آماده اید بزنید بریم:ساختار کلی متد translate به صورت زیر است:string.translate(mapping)همان طور که سینتکس بالا رو مشاهده میکنید ، متد ترنسلیت یک پارامتر تحت عنوان mapping دریافت میکند. این mapping در قالب یک دیکشنری است. با ساختار دیکشنری در پایتون آشنا هستیم. میدانیم که به صورت key ,value هست. به عنوان مثال:mydict = {'a':1,'b':2}که aو b کلیدهای ما و 1,2در نقش ولیوهای ما هستند.مقادیری دیکشنری که تحت عنوان آرگومان به متد ترنسلیت پاس داده میشود ، به صورت کدهای اسکی هستند. یعنی فرمت دیکشنری ما به صورت کدهای اسکی است. میدانیم برای اینکه بخواهیم کد اسکی کاراکترهای مورد نظر را به دست بیاوریم باید از متد ord استفاده کنیم. کلیدهای ما در این دیکشنری که به متد translateپاس میدهیم کدهای اسکی کاراکترهای رشته مبدا یا به عبارت دیگر کاراکترهای رشته اولیه ما هست و ولیوهای ما، کدهای اسکی کاراکترهای رشته دوم یا به عبارت دیگر کدهای اسکی کاراکترهای رشته دومی که میخواهند جایگزین کاراکترهای رشته اول متناظر با خود بشوند هستند. ( خودش میاد به صورت اتوماتیک از متد ord استفاده میکنه و کدهای اسکی کاراکترهای رشته اول و کاراکترهای رشته دوم رو به دست میاره )این دیکشنری یا از قبل وجود دارد یا اگر وجود نداشته باشد در ابتدا به کمک متد maketrans این دیکشنری را درست میکنیم سپس دیکشنری را به متد translateپاس میدهیم. در ابتدا یک مثال بدون استفاده از متد maketransبراتون میزنم که اول با ساختار خود translateآشنا بشید و بعد بریم سراغ متد maketrans. خب فرض کنید مثال ما به صورت زیر است:table = { 119 : 103, 121 : 102, 117 : None }# target string trg = "weeksyourweeks" print ("The string after translating is : ", end ="")print (trg.translate(table))در ابتدا ما یک variableتحت عنوان tableداریم که به صورت دیکشنری است. دیکشنری ما به فرمت کدهای اسکی میباشد. پس ما پارامتر اول translateرو داریم بدون اینکه نیاز باشه از متد maketrace برای درست کردن آن استفاده کنیم پس خیلی راحت این دیکشنری را به متد پاس میدهیم. چه اتفاقی می افته؟؟ نحوه کار دیکشنری: میگه آقا من میام رشته هدفتو میبینم اگه داخل رشته هدفت یه کاراکتری وجود داشت که کد اسکیش داخل من بود، من میام کاراکتر متناظر با اون کداسکی رو جایگزین کاراکتری که داخل رشته هدفت هستش میکنم. بزار خیلی ساده تر بهت بگم . مثال پایین رو یه نگاه بنداز : a = 'ab'b = 'cd'string = 'amd'new = string.maketrans(a,b)print(new) خروجی کد بالا میشه: {97: 99, 98: 100}print(string.translate(new)) حاصل پرینت بالا میشه:cmdبزار برات توضیح بدم که چجوری خروجی بالا به دست اومده . میدونیم که کداسکی کاراکتر a برابر با 97 هستش .و کد اسکی کاراکتر c برابر با 99 هستش. (کاراکتر متناظر با a در این مثال کاراکتر c هستش پس در دیکشنری کد اسکی کاراکتر a میشه key ما و کد اسکی کاراکتر متناظر با آن یعنی c میشه value ما )خب حالا اگه رشته هدف ما داخلش کاراکتر a وجود داشته باشه ،کاراکترcجایگزین کاراکتر a میشه . یعنی هر کاراکتر با کاراکتر متناظر خود جابه جا می شود.و اگه کاراکتری ، کاراکتر متناظر نداشت ،یعنی اگر در رشته هدف کاراکتری داشتیم که کداسکیش داخل اون دیکشنری نبود،خودش نوشته میشه. کد اولی که نوشتم رو خودت بنویس و اجرا کن نتیجه اشو ببین ?