2017-11-27 5 views
-1

次のコードでは、2行目でエラーが返されます。 'ResultSet'オブジェクトには属性 'find'がありません。しかし、私はそれを魔法のように私のために利用できるようにします。ここで何が起こるのか理解してください。forループ内のPythonオブジェクト属性

results_user = con.find_all("table", {"id" : re.compile('post[0-9].*')}) 

results_user.find("td", class_= "alt2") # this throws and error 

for name in results_user: 
    nm = name.find_all("td", class_= "alt2") 
    print(nm) 
+1

ループでは、オブジェクト 'name'は' results_user'と同じではありません。これは何らかのコンテナです。 'name'は' results_user'の要素です。 – cdarke

+0

文字列で呼び出すことができます。 forループを反復することによって、これが得られます。ここには魔法はありません。 – scharette

答えて

0

私はあなたがそこに示した同じループのことを意味すると思います。あなたは2つの異なるオブジェクトにアクセスしています。 "results_user"と "name"は2種類のものです。前者は、エラーによって示されるように、「find」属性を持たない。

1
    find
  1. あなたはない直接results_userに、results_user内の各要素に対してメソッドを呼び出すfind_allforループにおいてfind_all
  2. と同じではありません。

    ['a', 'b', 'c'].upper()(これは動作しません、'list' object has no attribute 'upper')と'a'.upper() ; 'b'.upper() ; 'c'.upper()の違いと同じです。

+0

ありがとうございます。分かりました。 results_user [3] .find_all( "td"、class_ = "alt2") – akshay

関連する問題