2017-03-09 64 views
1

我有一个叫做Earthquake的课程,它有一个字符串位置,还有一些对这个问题不重要的部分(我不认为)。 我写了一个函数(filter_by_place),它遍历我通过它的地震列表,并在每个地震位置字符串中查找给定的单词。如果在地震的位置找到这个单词,那么它会将该地震添加到列表中。我的问题是它不能区分大小写,我试图通过在位置字符串的全部小写版本中查找全部小写字母来实现这一点。如何在类对象上调用.lower?

def filter_by_place(quakes, word): 
    lst = [] 
    for quake in quakes: 
     if word.lower in (quake.place).lower: 
     lst.append(quake) 
    return lst 

我得到一个错误说“类型错误:类型builtin_function_or_method'的说法是不itterable” 所以,我的问题是:我如何获取类内的字符串为小写成为只是这个功能,所以我可以搜索词而不用担心大小写敏感?

我已经尝试添加

if word.lower or word.upper in quake.place: 

里面的for循环,但没有工作,我可以理解为什么。帮帮我?

回答

1

由于实际上并没有调用lower字符串函数,所以出现错误。我猜你是从红宝石来的,这不是必需的。

尝试:

def filter_by_place(quakes, word): 
    lst = [] 
    for quake in quakes: 
     if word.lower() in quake.place.lower(): 
     lst.append(quake) 
    return lst 
+0

谢谢!固定它 –

0

你需要做word.lower()。你错过了括号。发生的时间:)

试试这个

def filter_by_place(quakes, word): 
    lst = [] 
    for quake in quakes: 
     if word.lower() in quake.place.lower(): 
      lst.append(quake) 
    return lst 

因为你使用python,你可能想看看list comprehensions。你的代码会看起来像这样

def filter_by_place(quakes, place): 
    return [quake for quake in quakes if quakes.place.lower() is place] 
+0

谢谢!这是一个更优雅的做法。我感谢帮助:) –