Если все, что вам нужно, это извлечь из файлов слова, которые являются одной подстрокой другого (включая идентичные), вы можете сделать:
fone = set(['apple', 'orange', 'ice', 'icecream'])
ftwo = set(['apple' ,'pear' ,'ice'])
# transforming to sets saves to check twice for the same combination
result = []
for wone in fone:
for wtwo in ftwo:
if wone.find(wtwo) != -1 or wtwo.find(wone) != -1:
result.append(wone)
result.append(wtwo)
for w in set(result):
print w
В качестве альтернативы, если вы хотите, чтобы на основе сходствао том, как строки похожи в порядке их букв, вы можете использовать, как предположил Пол в своем ответе, один из классов, представленных difflib:
import difflib as dl
fone = set(['apple', 'orange', 'ice', 'icecream'])
ftwo = set(['apple' ,'pear' ,'ice'])
result = []
for wone in fone:
for wtwo in ftwo:
s = dl.SequenceMatcher(None, wone, wtwo)
if s.ratio() > 0.6: #0.6 is the conventional threshold to define "close matches"
result.append(wone)
result.append(wtwo)
for w in set(result):
print w
Я не рассчитал ни один из двух примеров, ноЯ предполагаю, что второй будет работать намного медленнее, так как для каждой пары вам придется создавать экземпляр объекта ...