2015-11-11 6 views
0

Я пытаюсь написать программу, которая сравнивает список скремблированных имен, с большим списком регулярных имен, символом по символу.Сравнение сходства строк в python

Например, допустим, что одно из имен в скремблированном списке - [email protected] [email protected]#, и я пытаюсь сравнить это имя с списком регулярных имен и посмотреть, сколько символов у него есть или с ним идеально сочетается одно из имен обычного списка.

Мой код до сих пор это:

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% -й матч и так далее, и, если возможно, что-то новичок может запрограммировать.

+0

The Google сделал [дифф-матч-патч пакет] (https://code.google.com/p/google- diff-match-patch /) имеет много того, что вы уже ищете. Вас, наверное, больше всего интересует 'diff' – wnnmaw

+0

Я ценю это, я просто ищу что-то, что я могу сделать и понять немного больше. – user1234567890

ответ

4

Похоже, что ваша проблема может быть решена расстоянием levenshtein между двумя словами. Он дает вам показатель сходства для двух строк.

От wikipedia:

расстояние Левенштейна является строкой метрики для измерения разности между двумя последовательностями. Неофициально расстояние Левенштейна между двумя словами - это минимальное количество односимвольных изменений (то есть вставки, удаления или замены), необходимые для изменения одного слова в другом.

Вы можете найти реализацию питона расстояния Левенштейна на pypi

pip install python-levenshtein 
Смежные вопросы