我想创建一个应用程序来检查用户输入的单词是否包含来自单独文本文件的单词/单词(例如 input = 'teeth',单独的文件包含单词 'eet')它应该返回 True 不管字符的顺序。
我看了这个帖子 matching all characters in any order in regex这很酷,因为它使用 set() 工作。问题是,set() 不允许您使用重复的字符(例如 eeet、aaat)。
我想知道我该如何解决这个问题?
最佳答案
我会从两个字符串创建一个 collections.Counter
对象,计算字符数,然后减去字典,测试结果字典是否为空(这意味着字符串包含子字符串并考虑基数)
导入集合
def contains(substring, string):
c1 = collections.Counter(string)
c2 = collections.Counter(substring)
return not(c2-c1)
print(contains("eeh","teeth"))
print(contains("eeh","teth"))
结果:
True
False
请注意,您的示例并不具有代表性
>>> "eet" in "teeth"
True
这就是我改变它的原因。
关于不考虑字符序列的 Python 字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48688494/