Проверить точное совпадение в текстовом файле

Я создал решатель анаграмм на Python 2.7, который принимает ввод, находит все его перестановки, а затем проверяет, соответствует ли он какому-либо слову в этот текстовый файл словаря. Работает очень хорошо, но есть одна проблема. Он не только дает точные совпадения, но и дает совпадение, когда анаграмма является лишь частью слова в текстовом файле.

Пример:

Введите зашифрованное слово: python

Возможное слово: ypnoth

Возможное слово: питон

Возможное слово: гипнот

Это происходит потому, что некоторые слова, такие как гипнотизер или гипнотик, содержат гипноз. Анаграмму по-прежнему легко решить с этой ошибкой, но я хочу, чтобы программа была максимально простой.

# import permutations module
from itertools import permutations as prm

# take input
scrambled_word = list(str(raw_input("Input scrambled word: ")))

# empty lists that will be appended to later
prm_list = []
possible_words = []

# takes each permutation of the input and puts in a list
for i in prm(scrambled_word):
   prm_list.append("".join(i))

def check(x, y):

   # open list of words
   dictionary = file('E:\MRP\Text_Files\dictionary.txt')

      # check each line in the dictionary against each item
      # in the list of permutations and add it to another empty list if it's a match
   for line in dictionary:
      for i in x:
         if i in line:
            y.append(i)


check(prm_list, possible_words)

# delete duplicates
possible_words = list(set(possible_words))

# print out possible words
for i in possible_words:
   print "Possible Word: " + i

Как я мог распечатать только точные совпадения при сравнении перестановок и словаря? Я попробовал оператор == в функции check, но это сделало программу хуже.


person michaelpri    schedule 24.12.2014    source источник
comment
== должно работать. Если он не работает для точных совпадений, возможно, при извлечении из файла может быть какой-то пробельный символ. Попробуйте line.strip(), прежде чем сравнивать его с чем-либо   -  person Kamehameha    schedule 24.12.2014


Ответы (1)


Из-за того, что вы проверяете с помощью операции in (if i in line), вам нужно проверить с помощью ==, но поскольку строка имеет \n в конце, вам нужно добавить один \n в конце ваших слов.

if i+'\n' == line
person kasravnd    schedule 24.12.2014
comment
@michaelpri не за что. если вы хотите избавиться от новой строки, вы можете прочитать свой файл с помощью splitlines - person kasravnd; 24.12.2014
comment
@michaelpri с этим он должен печатать собачью будку, когда вы входите в дома. - person David Conrad; 24.12.2014