python if语句文本

时间:2018-12-10 10:01:36

标签: python if-statement beautifulsoup

true

您好,我是x =(soup.find_all('p')) if (x.find('British dishes') != -1): print ("TRUE") else: print ("FALSE") 的新手,如果P标签匹配或包含特定文本,我将尝试打印beautifulsoupTrue

我可以打印p标记的内容,但是不能输出true或false成功。例如TRUE P tag contain "British dishes"

获取这些错误信息:

  

ResultSet对象没有属性'%s'。您可能正在治疗   项目列表,例如单个项目。您在致电时是否致电find_all()   打算调用find()吗?“%键AttributeError:ResultSet对象没有   属性“查找”。您可能正在处理类似   单项。当您打算致电find()时,您是否致电过find_all()?

这是我从'p'中得到的文字[

常春藤在中央餐厅同时提供A La Carte和Set菜单,欢迎顾客不加保留

在伦敦最有名的餐厅之一给朋友或爱人一个独特的午餐或晚餐体验

常春藤全天菜单均提供常春藤经典菜以及现代英式菜肴,每天中午12点开始提供直到深夜

在鸡尾酒吧,酒吧经理达伦·鲍尔(Darren Ball)的鸡尾酒单以The Roaring Twenties的标志性饮料以及像Pina Coladas和Strawberry Daiquiris这样的媚俗经典酒向常春藤致敬。常春藤常在中央餐厅用餐,那里供应点菜菜单和餐桌d'hôte菜单。

要预订餐桌,请致电020 7836 4751或在线预订{{ 3}}。

常春藤在中央用餐吧欢迎您的光临,那里设有A La Carte和Table d'hôte菜单

有关伦敦最受欢迎的餐厅的最新更新,事件和菜单。

*必填字段

我们想与您就我们所有的餐厅保持联系独家新闻和提前预订的机会。我们将就特殊活动,新开业以及最新的季节性菜单与您联系。我们将保护您的数据安全,当然绝不会出售或共享数据。您可以随时通过单击收到的任何电子邮件上的退订或单击我们网站上的链接来改变主意。有关我们的数据政策和保护的详细信息。

]

1 个答案:

答案 0 :(得分:0)

在您的示例中,您需要循环遍历每个<p>标签文本,并确保以一种情况搜索文本, 可以是小写字母,因为{{ 1}}和British Dishes不匹配。您也不会在British dishes元素上调用.text,这不会从标记中提取文本。

固定代码:

<p>

现在打印:

x = soup.find_all('p')
for y in x:
    lowercase = y.text.lower()
    if lowercase.find("british dishes") != -1:
        print("TRUE")
    else:
        print("FALSE")

或者,您可以只使用FALSE FALSE TRUE # --> line has 'British dishes' FALSE FALSE FALSE FALSE FALSE FALSE FALSE 运算符,而不要使用in

str.find()

注意:当for x in soup.find_all('p'): lowercase = x.text.lower() if 'british dishes' in lowercase: print ("TRUE") else: print ("FALSE") "TRUE"可用时,不需要打印"FALSE"True。您可以在此处直接使用Falseprint(True)

您还可以将搜索功能包装起来,并简单地打印出布尔结果:

print(False)

如果要返回,将所有结果合并为一个结果,可以在此处使用any()

def line_result(line, to_find):
    return to_find in line.lower()

for x in soup.find_all('p'):
    print(line_result(line=x.text, to_find='british dishes'))