Python 如何将字符串与bs4对象进行比较

Python 如何将字符串与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

我试图创建一个程序,从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,"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文件。这就是它不起作用的原因吗?