変数に割り当てた文字列に、事前定義された辞書のキーと値のペアの値が含まれているかどうかをチェックするif
ブロックステートメントがあります。movieTitle
私が持っているコードは次のとおりです。
import mechanize
from bs4 import BeautifulSoup
leaveOut = {
'a':'cat',
'b':'dog',
'c':'werewolf',
'd':'vampire',
'e':'nightmare'
}
br = mechanize.Browser()
r = br.open("http://<a_website_containing_a_list_of_movie_titles/")
html = r.read()
soup = BeautifulSoup(html)
table = soup.find_all('table')[0]
for row in table.find_all('tr'):
# Find all table data
for data in row.find_all('td'):
code_handling_the_assignment_of_movie_title_to_var_movieTitle
if any(movieTitle.find(leaveOut[c]) < 1 for c in 'abcde'):
do_this_set_of_instructions
else:
pass
私の考えでは、値が見つかった場合、1 より大きい (または少なくとも) 等しいインデックス整数値を返すメソッドmovieTitle
を使用して、辞書 (定義済み) の値のいずれかについて文字列をテストできます。したがって、.find()
条件の結果が 1 未満の場合 (通常、存在しない場合は -1)、残りのプログラムを続行できます。それ以外の場合は、残りのプログラムを実行しません。
しかし、Aptana デバッグ機能を使用すると、Aptana がその上if
をスキップしているかのように、このブロックのブレークポイントがエンゲージされていないことがわかります。どうしてこれなの?
編集:
わかりやすくするために、より多くのコードを含めました。提案を確認した後、@kqr が提案したコードを使用しました。ただし、実際のプログラムでは、leaveOut dict に文字列値が含まれているにもかかわらず、movieTitle が表示されます。なんで?