У меня есть много файлов формата html в папке. Мне нужно проверить, содержит ли каждый из них этот тег:

<strong>QQ</strong>

И нужно извлечь только "QQ" и его содержание. Сначала я читаю один из файлов для тестирования, но, похоже, мое регулярное выражение не соответствует. Если я заменил fo_read в качестве тега

<strong>QQ</strong> 

Это будет соответствовать, хотя

fo = open('4251-fu.html', "r")
fo_read = fo.read()
m = re.search('<strong>(QQ)</strong>', fo_read)
if m:
    print 'Match found: ', m.group(1)
else:
    print 'No match'
fo.close()
-2
Michael Lin 28 Май 2017 в 03:43

2 ответа

Лучший ответ
result = soup.find("strong", string=re.compile("Question-and-Answer Session"))
if result:
    print("Question-and-Answer Session")
    # for the rest of text in the parent
    rest = result.parent.text.split("Question-and-Answer Session")[-1].strip()
    print(rest)
else:
    print("no match")
0
Serge 28 Май 2017 в 01:53

Вы можете попробовать с BeautifulSoup:

from bs4 import BeautifulSoup
f = open('4251-fu.html',mode = 'r')
soup = BeautifulSoup(f, 'lxml')
search_result = [str(e) for e in soup.find_all('strong')]
print search_result
if '<strong>Question-and-Answer Session</strong>' in search_result:
    print 'Match found'
else:
    print 'No match'
f.close()

Выход:

['<strong>Question-and-Answer Session1</strong>', '<strong>Question-and-Answer Session</strong>', '<strong>Question-and-Answer Session3</strong>']
Match found
0
Tiny.D 28 Май 2017 в 01:05