Отредактировано на основе вашего комментария.
Это может быть то, что вам нужно:
#!/usr/bin/env python
def find_best_letter_matches(lines, target):
m = []
m_count = 0
for line in lines:
count = sum(map(lambda x: x[0] == x[1], zip(line, target)))
if count > m_count:
m = []
m_count = count
if count == m_count:
m.append(line)
return m
def find_n_letter_matches(lines, target, n):
m = []
for line in lines:
count = sum(map(lambda x: x[0] == x[1], zip(line, target)))
if count >= n:
m.append(line)
return m
if __name__ == '__main__':
with open('text.txt', 'r') as f:
lines = f.read().split('\n')
best_matches = find_best_letter_matches(lines, 'bubal')
n_matches = find_n_letter_matches(lines, 'bubal', 2)
print('Best letter matches', best_matches)
print('At least 2 letters match', n_matches)
Функции сравнивают каждую строку с целью, буква забуква и подсчитывает количество совпадений.Затем первый возвращает список строк с наибольшим соответствием, а второй возвращает все, которые совпадают с n
или более буквами.
Вывод с вашим примером текста (с добавленным бубалом):
Best letter matches ['bubal']
At least 2 letters match ['bulks', 'bible', 'bubal']