2017-03-09 59 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

謝謝!這是一個更優雅的做法。我感謝幫助:) –