需要帮助编写python中的单词查找器

时间:2011-09-20 19:10:47

标签: python list-manipulation

嗨,我有一个关于python的问题,我是一个菜鸟:

我有一个文本文件,其中包含按字母顺序排列的单词列表(大约23000个),就像一个小字典 每一行都是该文本文件中的一个单词

我必须制作一个程序,询问用户九个字母,然后该程序应该重新排列这些字母,并找到文本文件中与这九个字母组匹配的所有单词

我有点陷入这个程序的编码,我想要一些帮助

这就是我所做的

Nian = raw_input ("Type in nine letters :")

filename = "dictionary.txt"
fil = open(filename, "r")

lines = fil.read()

tx4 = lines.strip()

a = Nian[0]    
b = Nian[1]      
c = Nian[2]       
d = Nian[3]       
e = Nian[4]    
f = Nian[5]      
g = Nian[6]    
h = Nian[7]     
i = Nian[8]

for w in lines[0:23005]:
       if a or b or c or d or e or f or g or h or i in lines:
       print w 

3 个答案:

答案 0 :(得分:2)

所以,如果它与这9个字母完全匹配,我们在这里可能会有点棘手。不是创建所有这些排列并检查每个排列,而是使用python内置sorted函数(doc)将单词排序为字母顺序,并比较结果。

这里的“诡计”是意识到你正在寻找这9个字母的字谜。例如, 'terse'和'reset'是彼此的字谜,但是如果你对它们进行排序,它们都会变成'eerst'。

即使您没有寻找完全匹配,您仍然可以使用此技巧进行优化。

至于程序的其余部分,如果你找一些关于用python读取文本文件的基础教程,我相信你将能够完成剩下的工作。祝你好运!

答案 1 :(得分:0)

以下是如何继续:

  1. 将文件读入set()对象,如果使用'\n'对象的readlines()方法,请不要忘记在行尾删除file
  2. 使用http://docs.python.org/library/itertools.html#itertools.permutations迭代所有排列,并检查其中一个排列是否在您的集合中。也许您必须将元组映射到字符串,使用join的{​​{1}}方法很有帮助。
  3. 您知道有str个排列吗?

答案 2 :(得分:0)

首先出现在我脑海中的是集合。

这可能不是理想的解决方案,但应该做好工作:

match_letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}
for line in file:
    line = line.strip()
    line_letters = set(line)
    # test whether any letter from match_letters is in line_letters
    if line_letters & match_letters:
        print(line)

,如果我误解并且您正在寻找包含所有九个字母的字词:

    if line_letters >= match_letters:
        print(line)

,如果您要查找包含这九个字母的字词:

    if line_letters <= match_letters:
        print(line)