如何在类对象上调用.lower?

时间:2017-03-09 02:42:34

标签: python class

我有一个叫做地震的课程,它有一个字符串的位置,以及其他一些对这个问题不重要的部分(我不认为)。 我编写了一个函数(filter_by_place),它迭代我已经通过的地震列表,并在每个地震位置字符串中查找给定的单词。如果在地震的位置找到该单词,则会将该地震添加到列表中。我的问题是它不能区分大小写,并且我试图通过在位置字符串的全小写版本中查找全小写单词来实现这一点。

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

我收到错误说" TypeError:类型为' builtin_function_or_method'的参数是不可行的" 所以,我的问题是:如何让类中的字符串变成小写,只是为了这个函数,所以我可以搜索单词而不用担心区分大小写?

我已经尝试添加

if word.lower or word.upper in quake.place:
在for循环中,

但是没有用,我可以理解为什么。救命?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要def filter_by_place(quakes, word): lst = [] for quake in quakes: if word.lower() in quake.place.lower(): lst.append(quake) return lst 。你错过了括号。一直发生:)

试试这个

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

因为您正在使用python,所以您可能需要查看list comprehensions。您的代码将看起来像这样

{{1}}