具有可互换字符的字符串匹配

时间:2019-06-17 21:07:48

标签: python python-3.x

我正在尝试在两个字符串之间进行简单的字符串匹配,从小字符串到大字符串。唯一要注意的是,我想将小字符串中的两个字符等同。特别是如果较小的字符串中包含字符'I'或字符'L',那么我希望将其互换考虑。

例如,假设我的小字符串是

s = 'AKIIMP'

,然后更大的字符串是:

b = 'MPKGEXAKILMP'

我想编写一个函数,该函数将使用两个字符串并检查较小的字符串是否在较大的字符串中。在此特定示例中,即使较小的字符串sb中不是子字符串,因为它不存在完全匹配,但是在我的情况下,它应该与之匹配,因为就像我提到的字符'I''L'可以互换使用,因此结果应该找到匹配项。

关于如何进行此操作的任何想法?

2 个答案:

答案 0 :(得分:3)

s.replace('I', 'L') in b.replace('I', 'L') 
在您的示例中,

将评估为True。

答案 1 :(得分:3)

您可以使用regular expressions来做到这一点:

import re

s = 'AKIIMP'
b = 'MPKGEXAKILMP'

p = re.sub('[IL]', '[IL]', s)
if re.search(p, b):
    print(f'{s!r} is in {b!r}')
else:
    print('Not found')

这不像@Deepstop's answer那样优雅,但是在等同于什么字符方面,它提供了更多的灵活性。