Python 如何将字符串与bs4对象进行比较
我试图创建一个程序,从Github获取数据,Github的概要文件描述中应该有一些字符串 但我不能在语句中使用notPython 如何将字符串与bs4对象进行比较,python,beautifulsoup,Python,Beautifulsoup,我试图创建一个程序,从Github获取数据,Github的概要文件描述中应该有一些字符串 但我不能在语句中使用not 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,"lx
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 only显示字符串,而我只想使用@grab only获取字符串。
如果要打印包含
'@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或var2
总是True
的原因是Python将此表达式解析为(var)或(var2 in test)
(因为中的绑定比或更“紧密”)。由于var
是一个非空字符串,因此它在布尔上下文中计算为True
。所以
(var) or (var2 in test)
相当于
True or (var2 in test)
其计算结果始终为True
请注意,“@Grab”不在“@Grab”
中是True
——因为@
和Grab
之间有空格。如果要打印包含“@Grab”
的行,则应在测试中使用如果“@Grab:…
。输出中没有出现@Grab
,不过,里面有@Grab
,但你没有检查。谢谢@Johan it worked是的,我完全忘记了@unutbu谢谢你的帮助。你的输出是一个PNG文件。这就是它不起作用的原因吗?