با داشتن نگاشت کاراکترهایی که باید با مقادیر متناظر جایگزین شوند، می خواهیم همه جایگزینها را در یک خط انجام دهیم.
ورودی فرضی: test_str = 'backendbaz is best', map_dict = {'e':'1', 'b':'6'}
Output : 6ack1nd6az is 61st
توضیح: همه حروف e باعدد 1 و همه حروف b با عدد 6 جایگزین شده اند.
روش شماره 1: استفاده از متد join() به همراه generator expression
در این روش، کاراکترهای موجود در دیکشنری را دریافت کرده و با دسترسی به دیکشنری آنها را به مقادیرشان map می کنیم، همه کاراکترهای دیگر بدون تغییر اضافه می شوند و نتیجه با استفاده از متد join() به رشته تبدیل می شود.
# Python3 code to demonstrate working of
# Replace Different characters in String at Once
# using join() + generator expression
# initializing string
test_str = 'backendbaz is best'
# printing original String
print("The original string is : " + str(test_str))
# initializing mapping dictionary
map_dict = {'e': '1', 'b': '6', 'i': '4'}
# generator expression to construct vals
# join to get string
res = ''.join(
idx if idx not in map_dict else map_dict[idx] for idx in test_str)
# printing result
print("The converted string : " + str(res))
خروجی
The original string is : backendbaz is best
The converted string : 6ack1nd6az 4s 61st
روش شماره 2: استفاده از regex + lambda
این روش پیچیده تری برای حل این مسئله است. در این روش، ما regex مناسب را با استفاده از توابع لامبدا می سازیم و عملیات جایگزینی مورد نیاز را انجام می دهیم.
# Python3 code to demonstrate working of
# Replace Different characters in String at Once
# using regex + lambda
import re
# initializing string
test_str = 'backendbaz is best'
# printing original String
print("The original string is : " + str(test_str))
# initializing mapping dictionary
map_dict = {'e':'1', 'b':'6', 'i':'4'}
# using lambda and regex functions to achieve task
res = re.compile("|".join(map_dict.keys())).sub(lambda ele: map_dict[re.escape(ele.group(0))], test_str)
# printing result
print("The converted string : " + str(res))
خروجی
The original string is : backendbaz is best
The converted string : 6ack1nd6az 4s 61st
روش شماره 3: استفاده از متدهای keys() و replace()
# Python3 code to demonstrate working of
# Replace Different characters in String at Once
# initializing string
test_str = 'backendbaz is best'
# printing original String
print("The original string is : " + str(test_str))
# initializing mapping dictionary
map_dict = {'e': '1', 'b': '6', 'i': '4'}
for i in test_str:
if i in map_dict.keys():
test_str=test_str.replace(i,map_dict[i])
# printing result
print("The converted string : " + str(test_str))
خروجی
The original string is : backendbaz is best
The converted string : 6ack1nd6az 4s 61st
دیدگاهها