بکندباز

جایگزین کردن چند کاراکتر مختلف به طور همزمان در پایتون

با داشتن نگاشت کاراکترهایی که باید با مقادیر متناظر جایگزین شوند، می خواهیم همه جایگزین‌ها را در یک خط انجام دهیم.

ورودی فرضی: 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
zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*