Есть ли способ определить индексы, по которым строка python отличается от другой строки? - PullRequest
0 голосов
/ 29 мая 2020

Я искал повсюду и, похоже, не нашел никакой готовой библиотеки, которая могла бы это сделать:

Учитывая 2 строки в python, где одна - исходная строка, а другая - определенные слова заменены на заполнители, я хотел бы определить индексы слов в исходной строке, которые были заменены заполнителями.

Пример:

original = "This is the original string"

processed = "This is [placeholder] string"

indices = [8, 20]

Первый индекс - это начало подстрока, которая была заменена, а второй индекс - конец этой подстроки.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 мая 2020

Это может быть не самый красивый Python код, который я написал, но это будет работать:

first = [index for index, 
        (a, b) in enumerate(zip(list(original), 
        list(processed))) if a != b ][0]

second = [len(original) - index for index, 
         (a, b) in enumerate(zip(list(original[::-1]), 
         list(processed[::-1]))) if a != b ][0]

difference = [first, second]

Он возвращает первый индекс, где есть несоответствие. И то же наоборот.

Out[76]: [8, 20]

Подробнее:

  1. Сравнивая каждую букву, он возвращает первый индекс, где first != second
  2. Сравнивая каждую букву, начиная с конца, возвращает len(first) - first difference
  3. Создает список этих двух индексов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...