![](/img/trans.png)
[英]How to perform logical operation and logical indexing using VIPS in Python?
[英]Python Logical Operation
我是python的新手,正在使用Scrapy库进行Web抓取项目。 我没有使用内置的域限制,因为我想检查到该域外部页面的任何链接是否已失效。 但是,我仍然希望将域内的页面与域外的页面区别对待,并在解析响应之前尝试手动确定站点是否在域内。
回应网址:
http://www.siteSection1.domainName.com
如果声明:
if 'domainName.com' and ('siteSection1' or 'siteSection2' or 'siteSection3') in response.url:
parsePageInDomain()
如果'siteSection1'是第一个出现在or列表中的语句,则以上语句为true(已解析该页面),但是如果响应URL相同但if语句如下,则不会解析该页面:
if 'domainName.com' and ('siteSection2' or 'siteSection1' or 'siteSection3') in response.url:
parsePageInDomain()
我在这里做错了什么? 我还不能很清楚地思考逻辑运算符发生了什么,任何指导都将不胜感激。 谢谢!
or
那样行不通。 尝试any
:
if 'domainName.com' in response.url and any(name in response.url for name in ('siteSection1', 'siteSection2', 'siteSection3')):
这是在发生什么情况, or
返回一个逻辑值or
两个参数的逻辑值-如果x
为True
,则x or y
返回x
,这对于字符串表示它不为空,如果x
不为True
y
。 因此('siteSection1' or 'siteSection2' or 'siteSection3')
计算结果为'siteSection1'
因为当被视为布尔值时, 'siteSection1'
为True
。
此外,您还使用and
组合了条件。 and
如果该参数的计算结果,以返回第一个参数False
,或者第二,如果第一个参数的计算结果为True
。 因此, if x and y in z
中的if x and y in z
不测试以查看x
和y
是否都在z
。 in
具有比and
更高的优先级-并且我必须向上看 -以便测试if x and (y in z)
。 同样, domainName.com
计算结果为True,因此它将y in z
仅返回y in z
。
any
相反,是一个内置的函数,它接受布尔的迭代,并返回True
或False
- True
,如果其中任何一个是True
, False
否则。 一旦达到True
值,它就会立即停止工作,因此非常有效。 我正在使用一个生成器表达式来告诉它继续检查您的三个可能的字符串,以查看它们中是否有任何一个在您的响应URL中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.