如何在python中打开文件,搜索忽略大小写的单词,找到单词的打印成功?

时间:2017-08-03 14:59:17

标签: python python-3.x

您正在阅读一位不熟悉的作者的书,并对他们可能来自哪个国家感到好奇。您决定编写一个程序,以帮助您根据书中单词的拼写进行猜测。

编写一个读取单词(例如颜色或颜色)的程序,并检查它是否出现在文件book.txt中,在书中找到了打印输出。或者没有在书中找到..

例如,给定book.txt文件:

  

假设?她怎么会形成一个   假设,她甚至不知道什么   其余的数据看起来像?

问题在于,无论我尝试过什么,我都无法让我的代码忽略这个词的情况。提供的输入字将始终为小写,但您的程序应以不区分大小写的方式匹配。

我的代码:

word = input("Word to look for: ")
with open('book.txt') as f:
  if word in f:
    print(word,"was found in the book.")
  else:
    print(word,"was not found in the book.")

预期产出:

Word to look for: hypothesize hypothesize was found in the book.

请保持尽可能简单。我仍在通过在线程序学习,该程序不允许导入未内置的模块。

3 个答案:

答案 0 :(得分:2)

你可以尝试:

word = input("Word to look for: ")
word_lower = word.lower()

with open('book.txt', 'r') as fh:
    data = fh.read().lower()
    if word_lower in data:
        print(word,"was found in the book.")
    else:
        print(word,"was not found in the book.")

我只强制worddata(文件的内容)为小写.lower(),因此它不会区分大小写。

我没有直接更新word,而是将降低的字符串存储在另一个变量(word_lower)中,以便准确打印输入的用户。

答案 1 :(得分:0)

您可以迭代文件中的单词并将每个单词小写以进行比较:

wordToMatch = input("Word to look for: ")
with open('book.txt') as f:
    for line in f:
       for word in line.split() :
           if word.lower() in wordToMatch :
              print(word,"was found in the book.")
           else:
              print(word,"was not found in the book.")

答案 2 :(得分:0)

实际上,要将变量中的值强制为小写,您不必定义新变量,只需使用旧变量并进行更改即可。而不是 word_lower = word.lower()只需word = word.lower()或直接将word.lower()放入if语句即可。这会更有效率。