我正在尝试创建一个从Github获取数据的程序,该程序的Github配置文件描述中应包含一些字符串。
但是我无法使用not in statement。
git_url = "https://github.com:443/search?p=2&q="+str(payload)+"&type=Users"
rr = requests.get(git_url, headers=headers, cookies=cookies)
page = bs4.BeautifulSoup(rr.text,"lxml")
page_parse = page.select('.user-list-info p')
for i in range(len(page_parse)):
test = page_parse[i].text
var = '@Grab'
if var not in test:
print(page_parse[i].text)
else:
print('Not')
虽然输出不起作用,但它仍然只显示带有抓取的字符串,而我只想仅使用@grab获取字符串。 Output Here
答案 0 :(得分:1)
如果要打印包含'@Grab'
或'@ Grab'
的行,可以使用:
test = page_parse[i].text
if ('@Grab' in test) or ('@ Grab' in test):
print(test)
或者,如果您有很多要测试的字符串,将它们放在这样的列表中可能会更容易:
test = page_parse[i].text
if any(item in test for item in ['@Grab', '@ Grab']):
print(test)
条件var or var2 in test
始终为True
的原因是因为Python将此表达式解析为(var) or (var2 in test)
(由于operator precedence,因为in
绑定了更多“紧密地”比or
)。由于var
是一个非空字符串,因此在布尔上下文中其值为True
。所以
(var) or (var2 in test)
等同于
True or (var2 in test)
,其总值为True
。