python

时间:2015-11-11 21:18:32

标签: python list string-comparison similarity

我正在尝试编写一个程序,将一系列加扰名称与一个常规名称列表进行逐字符比较。

例如,假设加扰列表中的一个名称是B@B St@r#,我正在尝试将该名称与常规名称列表进行比较,并查看它与其共有多少个字符,或者是否为与常规列表中的一个名称完美匹配。

到目前为止,我的代码是:

for ch in list2:    ##list 2 has the decrypted names
    parts = ch.split()
    decryptedfirst_names.append(parts[0]) ##Im trying to compare first names for now
    for ch in list1:  ##list1 is a big list of regular names
        part = ch.split()
        first_names.append(part[0])

matching = []
for ch in first_names:
    if ch in decryptedfirst_names and ch not in matching:
        matching.append(ch)
print(matching)

然后此代码将只打印匹配的名称。

我需要帮助尝试计算按位置匹配的确切字符数,这样我可以将其设置为80%匹配等百分比,如果可能的话,初学者可以编程。

1 个答案:

答案 0 :(得分:4)

听起来你的问题可以通过两个单词之间的levenshtein距离来解决。它为您提供了两个字符串的相似性度量。

来自wikipedia

  

Levenshtein距离是用于测量的距离的字符串度量   两个序列之间的差异。非正式地,Levenshtein距离   两个单词之间是单个字符编辑的最小数量   (即插入,删除或替换)需要更改一个   说到另一个。

您可以在pypi

上找到levenshtein距离的python实现
pip install python-levenshtein