匹配字符串python中的大小写单词

时间:2017-08-02 08:00:10

标签: python string python-2.7

我正在尝试编写一个函数来检查一个单词是否在字符串中,或​​者该单词与字符串中的每个单词共有len(word)-1个字符。

例如:

word: match   string: There is a match   -> True
word: matck   string: There is a match   -> True

两个示例的输出都必须为True,因为matck-1=matcmatch-1=matc

到目前为止,我已经编写了以下代码:

for idx, f in enumerate(files):
    for word in words:
        if term in f:
            numOfWord[idx] += 1
        else:
            file_words = f.split()
            for f_word in file_words:
                if word[:-1] == file_word[:-1]:
                    numOfWords[idx] += 1

但这并不好,因为我有一个非常大的单词列表和非常大的长文件目录,所以运行时间不太现实。

1 个答案:

答案 0 :(得分:0)

您可以使用Levenshtein距离来检查

def minimumEditDistance(s1,s2):
if len(s1) > len(s2):
    s1,s2 = s2,s1
distances = range(len(s1) + 1)
for index2,char2 in enumerate(s2):
    newDistances = [index2+1]
    for index1,char1 in enumerate(s1):
        if char1 == char2:
            newDistances.append(distances[index1])
        else:
            newDistances.append(1 + min((distances[index1],
                                         distances[index1+1],
                                         newDistances[-1])))
    distances = newDistances
return distances[-1]


print(minimumEditDistance("kitten","sitting"))
print(minimumEditDistance("rosettacode","raisethysword"))

https://rosettacode.org/wiki/Levenshtein_distance#Python