首页 > 解决方案 > 在文本字符串中查找单词(其中字母不连续)

问题描述

我想编写代码来在一长串文本中查找单词的特定实例,其中组成单词的字母不是相邻的,而是连续的。

我使用的字符串将有数千个字符长,但作为一个较短的示例...如果我想在以下字符串中查找单词“chair”的实例,其中每个字母与前一个字母的长度不超过 10 个字符。

dje c skjwid h l; 一个sdjakmcope r kldrlkadkj

为了避免在大字符串中找到许多实例的问题,我更愿意将每两个字母之间的距离限制为 10。所以字符串 abc C abcabc H abc A abd I abc R中的单词 chair会计数。但是字符串 abc C abcabcabcabcabcabcabcabcab H jdke A lcnd I nadh R中的单词 chair不算数。

我可以用 python 代码做到这一点吗?如果是这样,我会很感激我可以使用的一个例子。

也许粘贴文本字符串或使用输入文件?让它搜索我想要的一个或多个单词,然后确定这些单词是否存在?

谢谢。

标签: pythonalgorithm

解决方案


下面的代码将做你想做的事:

will_find = "aaaaaaaaaaaaaaaaaaaaaaaabcCabcabcHabcAabdIabcR"
wont_find = "abcCabcabcabcabcabcabcabcabHjdkeAlcndInadhR"
looking_for = "CHAIR"
max_look = 10

def find_word(characters, word):
    i = characters.find(word[0])

    if i == -1:
        print("I couldnt find the first character ...")
        return False

    for symbol in word:
        print(characters[i:i + max_look+1])
        if symbol in characters[i:i + max_look+1]:
            i += characters[i: i + max_look+1].find(symbol)
            print("{} is in the range of {} [{}]".format(symbol, characters[i:i+ max_look], i))
            continue
        else:
            print("Couldnt find {} in {}".format(symbol, characters[i: i + max_look]))
            return False

    return True

find_word(will_find, looking_for)
print("--------")
find_word(wont_find, looking_for)

推荐阅读