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

私はというエラーを取得する「はTypeErrorは:型 『builtin_function_or_method』の引数がitterableない」 だから、私の質問は:私はちょうどこの機能のために小文字になるためにクラス内でその文字列を取得するにはどうすればよいので、私大文字と小文字を区別せずに単語を検索できますか?

私はすでに、forループの内部

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

を追加しようとしたが、それは動作しませんでした、と私は理由を理解することができます。助けて?

答えて

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()を行う必要があります。あなたは括弧を欠いています。すべての時間:)

はあなたのpythonを使用しているので、あなたがlist comprehensionsを見てみることをお勧めします。この

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] 
+0

ありがとう!それははるかに優雅なやり方です。私は助けに感謝:) –

関連する問題