不考虑字符序列的 Python 字符串搜索

标签 python

我想创建一个应用程序来检查用户输入的单词是否包含来自单独文本文件的单词/单词(例如 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/

相关文章:

python - 数据集中的SettingWithCopyWarning

python - 为什么带有 Ryzen Threadripper 的 Numpy 比 Xeon 慢这么多?

python - 使用 wxPython 在 UI 中显示复数

python - 列表的浅拷贝[:]

python - SSH 命令客户端。如何禁用验证HostKey?

python - ValueError : Error when checking input: expected dense_1_input to have shape (None, None, 9000) 但得到了形状为 (9000, 1, 4) 的数组

python - 如何在 Python 中制作一个定时器程序

python - 如何在 pandas 中用恰好 24 个间隔前的值填充缺失项

python - 在Python中的分区上滚动总和

python - 我应该使用 tfidf 语料库还是仅使用语料库来使用 LDA 推断文档?