我想遍历分页页面,直到我到达最后一页。我在页面上搜索分页这个词,只要它存在,我希望我的循环继续。我现在所拥有的不执行while循环中的部分。我已单独测试条件语句以验证它是否返回True。
response = requests.get("someapi.api")
data = response.json()
while "pagination" in str(data) == True:
print "Found string"
response = requests.get(str(pag_object), timeout=5)
data = response.json()
答案 0 :(得分:2)
您的情况不正确。这就是你想要的:
while "pagination" in str(data):
# ...
(至少在这种情况下,由于您将结构化JSON作为响应,可能会有更简洁的方法来执行此检查,但这不是重点。)
您的原始状态不起作用,因为在引擎盖下,Python将其解释为
"pagination" in str(data) and str(data) == True
这是所有比较运算符(包括in
等成员资格测试)具有same precedence和chaining of comparison operators的结果。
链接意味着您可以编写一个常见的数学表达式,例如x < y < z
,这意味着我们通常认为它的作用 - y
介于x
和{{之间1}}。或者换句话说,z
。
但是,应用于原始表达式,这种链接会导致您看到令人惊讶的结果。
这种情况发生即使你单独测试了你的部分条件,因为问题是在那些子表达式的特定组成中。如果您是通过将左侧部分分组来编写的
x < y AND y < z
像那样,它实际上会起作用 - 虽然这是不必要的。只是在Python中做("pagination" in str(data)) == True
就足够了,风格要好得多。