我有一个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
我的想法是,我可以movieTitle
使用该方法测试字典中任何值(预定义)的字符串.find()
,如果找到该值,将返回大于(或至少)等于 1 的索引整数值。因此如果条件的结果是 <1(通常为 -1 时不存在),我可以继续执行程序的其余部分,否则不执行程序的其余部分。
但是,当我使用 Aptana 调试功能时,我可以看到我在此if
块上的断点从未使用过,就好像 Aptana 正在跳过它一样。为什么是这样?
编辑:
为了清楚起见,包含了更多代码。在查看了建议后,我使用了@kqr 建议的代码。但是,尽管 leaveOut dict 中包含字符串值,但我的实际程序仍然显示movieTitle。为什么?