- 生成两个字符串模板,比如:str_template1 = "Hello, {0}!" 和 str_template2 = "Hello, {name}!"
- 将两个字符串模板中的占位符和参数名称提取出来:
placeholders1 = re.findall(r'{(\d+)}', str_template1)
placeholders2 = re.findall(r'{([a-zA-Z]+)}', str_template2)
- 比较两个字符串模板中的占位符是否相同,如果不同则说明两个字符串模板不一样;如果相同则继续比较每个占位符对应的参数名称是否相同:
if sorted(placeholders1) == sorted(placeholders2):
for i in range(len(placeholders1)):
if placeholders1[i].isdigit() and not placeholders2[i].isdigit():
break
elif not placeholders1[i].isdigit() and placeholders2[i].isdigit():
break
elif placeholders1[i].isdigit() and placeholders2[i].isdigit():
continue
elif placeholders1[i] != placeholders2[i]:
break
else:
print("两个字符串模板相同")
else:
print("两个字符串模板不同")
示例代码:
import re
str_template1 = "Hello, {0}!"
str_template2 = "Hello, {name}!"
placeholders1 = re.findall(r'{(\d+)}', str_template1)
placeholders2 = re.findall(r'{([a-zA-Z]+)}', str_template2)
if sorted(placeholders1) == sorted(placeholders2):
for i in range(len(placeholders1)):
if placeholders1[i].isdigit() and not placeholders2[i].isdigit():
break
elif not placeholders1[i].isdigit() and placeholders2[i].isdigit():
break
elif placeholders1[i].isdigit() and placeholders2[i].isdigit():
continue
elif placeholders1[i] != placeholders2[i]:
break
else:
print("两个字符串模板相同")
else:
print("两个字符串模板不同")