কম্পিউটার টিউটোরিয়াল

পাইথনে maketrans() এবং translate() ফাংশন ব্যবহার


maketrans() ফাংশন

str.maketrans() একটি অনুবাদ টেবিল (translation table) তৈরি করে যা translate() মেথডে ব্যবহার হয়। এটি ক্যারেক্টার-টু-ক্যারেক্টার ম্যাপিং তৈরি করে।

সিনট্যাক্স

str.maketrans(x[, y[, z]])

y এবং z অপশনাল।

প্যারামিটার ও ব্যবহার

প্যারামিটারবিবরণ
x (একটি আর্গুমেন্ট)ডিকশনারি হতে হবে। ক্যারেক্টার বা ইউনিকোড নম্বর থেকে অনুবাদে ম্যাপিং।
x, y (দুই আর্গুমেন্ট)দুটি সমান দৈর্ঘ্যের স্ট্রিং। প্রথম স্ট্রিংয়ের প্রতিটি ক্যারেক্টার দ্বিতীয় স্ট্রিংয়ের সম্পর্কিত ক্যারেক্টরে ম্যাপ হবে।
x, y, z (তিন আর্গুমেন্ট)z-এ থাকা ক্যারেক্টারগুলো ডিলিট হবে (None-এ ম্যাপ)।

উদাহরণ ১: ডিকশনারি দিয়ে ম্যাপিং

# ক্যারেক্টার ম্যাপিং
dict1 = {"a": "123", "b": "456", "c": "789"}
my_string = "abc"
print(my_string.maketrans(dict1))
# আউটপুট: {97: '123', 98: '456', 99: '789'}  (97='a', 98='b', 99='c' এর ইউনিকোড)

# ইউনিকোড নম্বর দিয়ে ম্যাপিং
dict2 = {97: "123", 98: "456", 99: "789"}
print(my_string.maketrans(dict2))
# একই আউটপুট

উদাহরণ ২: দুটি স্ট্রিং দিয়ে ম্যাপিং

my_string1 = "abc"
my_string2 = "def"
string = "abc"
print(string.maketrans(my_string1, my_string2))
# আউটপুট: {97: 100, 98: 101, 99: 102}  (a->d, b->e, c->f)

# অসমান দৈর্ঘ্যের স্ট্রিং দিলে এরর
my_string1 = "abc"
my_string2 = "defghi"
print(string.maketrans(my_string1, my_string2))
# ValueError: the first two maketrans arguments must have equal length

translate() ফাংশন

translate() মেথডে maketrans()-এর তৈরি টেবিল পাস করে ক্যারেক্টার রিপ্লেস করা হয়।

উদাহরণ: সাধারণ রিপ্লেসমেন্ট

# অনুবাদ টেবিল তৈরি
table = str.maketrans("abc", "def")
print(table)  # {97: 100, 98: 101, 99: 102}

# প্রয়োগ
value = "aabbcc"
result = value.translate(table)
print(result)  # ddeeff

উদাহরণ: ক্যারেক্টার মুছে ফেলা (তৃতীয় আর্গুমেন্ট)

# '7'->'1', '8'->'2', '9'->ডিলিট
table = str.maketrans("78", "12", "9")
input_str = "123456789"
result = input_str.translate(table)
print(input_str)   # 123456789
print(result)      # 12345612  (৯ গেল, ৭→১, ৮→২)

উদাহরণ: ROT13 এনক্রিপশন

# ROT13 টেবিল: a-z -> n-za-m
trans = str.maketrans(
    "abcdefghijklmnopqrstuvwxyz",
    "nopqrstuvwxyzabcdefghijklm"
)

print("gandalf".translate(trans))        # tnaqnys
print("gandalf".translate(trans).translate(trans))  # gandalf (দুইবার করলে ফিরে আসে)

সারসংক্ষেপ

  • maketrans() — ম্যাপিং টেবিল বানায়।
  • translate() — টেবিল অনুযায়ী ক্যারেক্টার বদলে/মুছে দেয়।
  • দ্রুত ও কার্যকর স্ট্রিং ম্যানিপুলেশনের জন্য আদর্শ।
  1. পাইথনে getattr() এবং setattr() ফাংশনের পার্থক্য কী?

  2. পাইথনে raw_input() এবং input() ফাংশনের পার্থক্য

  3. পাইথনে দেওয়া ডিকশনারি অনুযায়ী স্ট্রিং ট্রান্সলেট করা

  4. পাইথন ফাংশন হ্যাশেবল কেন এবং কীভাবে?