查找文件中的特定单词

时间:2012-03-26 05:09:48

标签: python

我必须在python中编写一个程序,在该程序中,用户可以获得一个带有四个不同的文字游戏的菜单"。有一个名为dictionary.txt的文件,其中一个游戏要求用户输入a)单词中的字母数和b)要从字典中搜索的单词中排除的字母(dictionary.txt包含整个字典) )。然后程序打印出符合用户要求的单词。我的问题是我是如何打开文件并在该文件中搜索具有一定长度的单词。我只有一个基本代码,只询问用户输入。我很新,请帮助:( 这就是我的第一个选择。其他人都很好,我知道如何打破循环,但这个特定的一个真的给了我麻烦。我已经尝试了一切,我只是不断收到错误。老实说,我只参加了这个课,因为有人说这会很有趣。它是,但最近我真的落后了,我不知道现在该做什么。这是一个介绍级别的课程所以请你好,我从来没有这样做过,直到现在:(

print
print "Choose Which Game You Want to Play"
print "a) Find words with only one vowel and excluding a specific letter."
print "b) Find words containing all but one of a set of letters."
print "c) Find words containing a specific character string."
print "d) Find words containing state abbreviations."
print "e) Find US state capitals that start with months."
print "q) Quit."
print

choice = raw_input("Enter a choice: ")
choice = choice.lower()
print choice

while choice != "q":
    if choice == "a":
        #wordlen = word length user is looking for.s

        wordlen = raw_input("Please enter the word length you are looking for: ")
        wordlen = int(wordlen)
        print wordlen

        #letterex = letter user wishes to exclude.
        letterex = raw_input("Please enter the letter you'd like to exclude: ")
        letterex = letterex.lower()
        print letterex

3 个答案:

答案 0 :(得分:3)

以下是您想要做的事情,算法:

  1. 打开文件
  2. 逐行阅读,并在每一行(假设每行有一个且只有一个单词),检查该单词是否为a)是否具有适当的长度,b)是否包含排除的字符
  3. 这会建议您使用哪种控制流程?想一想。

    我不确定你是否对如何从解决问题的角度或Python的角度来解决这个问题感到困惑,但是如果你不确定如何在Python中专门做这个,那么这里有一些有用的链接:

答案 1 :(得分:1)

  

我的问题是如何打开文件

使用with statement

with open('dictionary.txt','r') as f:
    for line in f:
       print line
  

并在该文件中搜索具有一定长度的单词。

首先,确定要搜索的单词的长度。

然后,读取包含单词的文件的每一行。

检查每个单词的长度。

如果匹配您要查找的长度,请将其添加到列表中。

答案 2 :(得分:1)

要打开文件,请使用open()。您还应该阅读Python教程。 7,file input/output

打开文件并获取每一行

假设您的dictionary.txt每个单词都在一个单独的行中:

opened_file = open('dictionary.txt')
for line in opened_file:
    print(line) # Put your code here to run it for each word in the dictionary

字长:

您可以使用str.len()方法检查字符串的长度。请参阅Python documentation on string methods

"Bacon, eggs and spam".len() # returns '20' for 20 characters long

检查字母是否在单词中

再次使用Python sring方法中的str.find()


看到您的代码示例后的进一步评论:

  • 如果您要打印多行提示,请使用heredoc syntax(三重引号)而不是重复的print()语句。
  • 当用户问“长多少字母”时,您的用户输入bacon sandwich而不是数字会怎么样? (你的作业可能不会指定你应该优雅地处理不正确的用户输入,但是认为对它不会有任何伤害。)