#کار_با_متد_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 میشه . یعنی هر کاراکتر با کاراکتر متناظر خود جابه جا می شود.و اگه کاراکتری ، کاراکتر متناظر نداشت ،یعنی اگر در رشته هدف کاراکتری داشتیم که کداسکیش داخل اون دیکشنری نبود،خودش نوشته میشه.
کد اولی که نوشتم رو خودت بنویس و اجرا کن نتیجه اشو ببین 😉

خب این بدون استفاده از متد maketranse . تو پست بعدی میریم سراغ متد .
maketranse
@raspberry_python

Comments

Be the first to add a comment