猿问

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

我正在尝试创建一个从 Github 获取数据的程序,在 Github 的配置文件描述中应该有一些字符串。


但我无法使用 not in 声明。


 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 获取字符串。 在此输出

白猪掌柜的
浏览 186回答 1
1回答

LEATH

如果要打印包含'@Grab'或 的行'@ Grab',可以使用:test = page_parse[i].textif ('@Grab' in test) or ('@ Grab' in test):    print(test)或者,如果您有许多想要测试的字符串,将它们放在这样的列表中可能会更容易:test = page_parse[i].textif any(item in test for item in ['@Grab', '@ Grab']):    print(test)条件var or var2 in test总是True为的原因是因为 Python 将此表达式解析为(var) or (var2 in test)(由于运算符优先级,因为in绑定比 更“紧密” or)。由于var是一个非空字符串,因此它True在布尔上下文中进行评估。所以(var) or (var2 in test)相当于True or (var2 in test)始终评估为True.
随时随地看视频慕课网APP

相关分类

Python
我要回答