检查文本文件中的完全匹配

时间:2014-12-24 06:22:17

标签: python python-2.7 text-files anagram

我在Python 2.7中构建了一个anagram解算器,它接受输入,找到它的所有排列,然后检查它是否与this dictionary text file中的任何单词匹配。它工作得很好,但它有一个问题。它不仅提供完全匹配,还给出了一个匹配,其中anagram只是文本文件中单词的一部分。

示例:

  

输入乱码:python

     

可能的词:ypnoth

     

可能的Word:python

     

可能的词:催眠

这样做是因为有一些像催眠师或催眠术这样含有催眠术的词。使用此错误解决字谜仍然很容易,但我希望程序尽可能简单。

# 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运算符,但这会使程序变得更糟。

1 个答案:

答案 0 :(得分:1)

因为您检查了in操作(if i in line),您需要查看== 但由于行尾随\n,您需要在单词末尾添加一个\n

if i+'\n' == line