Сравнение 2 строк с одинаковыми буквами - PullRequest
0 голосов
/ 19 марта 2012

Я хотел бы знать, как сравнивать 2 разные строки с помощью функции в Python. Более конкретно, насколько похожи две разные строки, и их сходство в процентах (буквы, которые появляются в обеих строках). Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 19 марта 2012
def pctSame(s1,s2):
    # Make sorted arrays of string chars
    s1c = [x for x in s1]
    s1c.sort()
    s2c = [x for x in s2]
    s2c.sort()
    i1 = 0
    i2 = 0
    same = 0
    # "merge" strings, counting matches
    while ( i1<len(s1c) and i2<len(s2c) ):
        if s1c[i1]==s2c[i2]:
            same += 2
            i1 += 1
            i2 += 1
        elif s1c[i1] < s2c[i2]:
            i1 += 1
        else:
            i2 += 1
    # Return ratio of # of matching chars to total chars
    return same/float(len(s1c)+len(s2c))
1 голос
/ 19 марта 2012

Вы можете посмотреть на difflib для различных способов сравнения строк и получения различий.Похоже, difflib.Differ.compare(string1, string2) даст вам итератор, который производит строки.Строки с префиксом - находятся в одной строке, строки с пустым префиксом - в обеих строках, а строки с префиксом + - в другой строке.

0 голосов
/ 19 марта 2012

SequenceMaster из difflib - это почти то, что вы ищете. Он выдает оценку от 0 до 1, в зависимости от того, насколько они похожи друг на друга.

0 голосов
/ 19 марта 2012

Сходство строк - это показатель, который зависит от того, что вы измеряете. Вы пытаетесь сопоставить опечатку с предполагаемым словом в словаре? Сравнивая последовательности ДНК или белка? Пытаетесь сделать поиск документов на основе сходства с поисковым запросом? Делать нечеткое совпадение имен? Для каждой из этих задач может подойти другой алгоритм. Если вы действительно задаете полностью общий вопрос, вы можете начать с чтения о расстоянии Левенштейна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...