suguby
@suguby
программист, python, django, mysql, git, hg, linux

Как в пайтоне выделить общую часть из двух строк?

Пусть есть две строки
s1 = u'А роза упала на лапу Азора'
s2 = u'Дай, Джим, на счастье лапу мне'

нужно получить строку 'лапу'.
Есть ли стандартные средства типа .find() или .startswith() ?
  • Вопрос задан
  • 735 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Вам сюда:
difflib.SequenceMatcher.find_longest_match()

Пример:
>>> from difflib import SequenceMatcher as SM
>>> s1 = 'A roza upala na lapu Azora'
>>> s2 = 'Dai, Djim, na s4astie lapu mne'
>>> sm = SM(lambda c: c in set(' ,'), s1, s2)
>>> m = sm.find_longest_match(0, len(s1), 0, len(s2))
>>> s1[m.a:m.b]
' lapu '
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dizballanze
@dizballanze
Software developer at Yandex
решение в лоб:

>>> s1 = u'А роза упала на лапу Азора'
>>> s2 = u'Дай, Джим, на счастье лапу мне'
>>> words = s1.split(' ')
>>> [word for word in words if word in s2]
[u'на', u'лапу']
Ответ написан
@javanub
if 'на лапу' in s1 and s2:
    print(True)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы