程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词?

开发过程中遇到在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词的问题如何解决?下面主要结合日常开发的经验,给出你关于在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词的解决方法建议,希望对你解决在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词有所启发或帮助;

我想编写一个程序,从输入中获取两个参数,第一个参数是一个句子(字符串),第二个参数是一个单词列表。 在问题的一部分中,如果句子中的单词可以通过替换、添加或删除字符来匹配列表中的单词之一,则该单词必须替换列表中的正确单词。 如果是单词中间的字母@R_624_6618@定义!

enter code heredef ListToString(s):    
str1 = " "      
return (str1.join(s)) 
str_True=input("please enter true String :")
lst_True=[]
main_lst=[]
while True:
    word=input("please enter a word:")
    if word=="end":
       break
    else:
        lst_True.append(word)
lst_str=List(str_True.split(" "))
print(lst_str)
for i in range(len(lst_str)):
    for j in range(len(lst_TruE)):
        if (len(lst_str)) > 2 and lst_str[i]!=lst_True[j]:
           if lst_str[i]==lst_True[j][:-1] or lst_str[i]==lst_True[j][1:] or 
lst_True[j]==lst_str[i][:-1] or lst_True[j]==lst_str[i][1:] or lst_str[i]==lst_True[j] 
[:j]+lst_True[j][j+1:] or lst_True[j]==lst_str[i][:i]+lst_str[i][i+1:]:
               lst_str[i]=lst_True[j]                    
 print(lst_str)
 print(ListToString(lst_str))    

解决方法

您所说的是 Levenshtein 距离。 Levenshtein 距离是单词之间的相似性度量,其中给定 2 个单词,它测量将一个单词转换为另一个单词的插入、删除或替换的次数。

因此您可以执行以下操作:

def levenshteinDistanceDP(token1,token2):
    distances = [[0]*(len(token2)+1) for _ in range(len(token1)+1)]

    for t1 in range(len(token1) + 1):
        distances[t1][0] = t1

    for t2 in range(len(token2) + 1):
        distances[0][t2] = t2

    a = 0
    b = 0
    c = 0

    for t1 in range(1,len(token1) + 1):
        for t2 in range(1,len(token2) + 1):
            if (token1[t1-1] == token2[t2-1]):
                distances[t1][t2] = distances[t1 - 1][t2 - 1]
            else:
                a = distances[t1][t2 - 1]
                b = distances[t1 - 1][t2]
                c = distances[t1 - 1][t2 - 1]

                if (a <= b and a <= C):
                    distances[t1][t2] = a + 1
                elif (b <= a and b <= C):
                    distances[t1][t2] = b + 1
                else:
                    distances[t1][t2] = c + 1

    return distances[len(token1)][len(token2)]

现在你的代码:

str_True = set(input("please enter true String :").split()) # We will use set for faster queries and to avoid duplicates.
lst_True = []

while True:
    word=input("please enter a word:")
    if word == "end":
        break
    else:
        lst_True.append(word)

original = lst_True.copy()


for i in range(len(str_TruE)):
    if not lst_True[i] in str_True:  # if the word is already on the set,it already meets the conditions.
        for word in str_True:
            if levenshteinDistanceDP(lst_True[i],word) <= 1:
                lst_True[i] = word

print("Original:",*original)                
print("Result:",*lst_TruE)

您可以在此处了解更多信息:https://blog.paperspace.com/implemenTing-levenshtein-distance-word-autocomplete-autocorrect/

大佬总结

以上是大佬教程为你收集整理的在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词全部内容,希望文章能够帮你解决在第一个列表中的单词中搜索一个字母,并替换为 Python 中第二个列表中的真实单词所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。