我正在尝试编写一个程序,让你在一个文件中搜索一个配方,它总是第一个在线上,但是当我使用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
在文件中。
答案 0 :(得分:0)
你可以尝试
elif line.split(' ')[0].lower() == name.lower():
这将在空格字符上拆分线,并抓住第一个项目,基本上会获得第一个单词。然后将转换为小写的单词与也转换为小写的搜索词进行比较。
这将对行中的第一个单词强制执行整个单词,不区分大小写的匹配。