如何在python上搜索文件行中的第一个单词

时间:2015-01-26 13:45:41

标签: python python-3.x

我正在尝试编写一个程序,让你在一个文件中搜索一个配方,它总是第一个在线上,但是当我使用startswith()方法时,它说:

AttributeError: 'builtin_function_or_method' object has no attribute 'startswith'

即使我已经阅读了文档和教程,但肯定有。

我试过这个:

def search ():
    name = search_box.get()
    with open("Recipe_Book.txt", "r+") as dataFile:
        for line in dataFile:
            if name == '':
                pass
            elif line.startswith(name):
                close(start_window)
                show_recipe()

然而,这仍然允许我搜索Ca以找到Cake - 我也不能使用.lower()方法,这样就不会意味着用户必须始终将大写字母放在正确的位置。

修改

def search ():
        print("1")
        name = search_box.get()
        print("2")
        with open("Recipe_Book.txt", "r+") as dataFile:
            print("Hi")
            for line in dataFile:
                if name == '':
                    print ("HELLO")
                    pass
                elif line.split(' ')[0] == name.lower():
                    print ("BYE")
                    close(start_window)
                    show_recipe()
                else:
                    print("hi")

这会打印到控制台'1','2'和'Hi'和'hi' - 因此是elif,我知道name在文件中。

1 个答案:

答案 0 :(得分:0)

你可以尝试

elif line.split(' ')[0].lower() == name.lower():

这将在空格字符上拆分线,并抓住第一个项目,基本上会获得第一个单词。然后将转换为小写的单词与也转换为小写的搜索词进行比较。

这将对行中的第一个单词强制执行整个单词,不区分大小写的匹配。