количество определенных слов в html файле python

Я новичок в Python. Я пытаюсь подсчитать некоторые слова или выражения на html-файлах. Например, у меня есть фрагмент html с исходными кодами, как показано ниже:

<div style="line-height:120%;text-align:justify;text-indent:24px;font-size:10.5pt;">
<font style="font-family:inherit;font-size:10.5pt;font-style:italic;font-weight:bold;">2013 vs. 2012&#160;&#160;</font>
<font style="font-family:inherit;font-size:10.5pt;">During 2013, the Company recognized a decommissioning charge of 7 million and a restoration liability of  million, partially offset by the 2013 reversal of the &#160;million tax indemnification liability associated with the 2006 sale of the Company&#8217;s Canadian subsidiary.</font></div>

Я хочу подсчитать, сколько раз «ответственность» появляется в куске. Ниже приведен мой код, который не работает:

import os
from bs4 import BeautifulSoup

lst=os.listdir("C:/html/")
for x in lst:
    print (x)
    html = open ("C:/html/"+x,'rb')
    bsobj = BeautifulSoup(html,"html.parser")
    metricslist = bsobj.findAll(div.string ='liability')
    print(len(metricslist)) 

Я знаю bsobj.findAll(div.string = ‘liability’) очень ошибается, но понятия не имеет, каким должен быть код. Любая помощь будет оценена по достоинству!

1 ответ

  1. Можно применить частичное соответствие строки к тексту элемента при использовании find()или find_all():

    soup.find(text=lambda text: text and "liability" in text)
    

    Или вместо функции можно использовать шаблон регулярного выражения:

    soup.find(text=re.compile(r"\bliability\b")