Существует нерегулярный способ сделать это;по общему признанию несколько запутанный, но все еще забавный:
Сначала мы заимствуем (и изменим) эту замечательную функцию:
def split_and_keep(s, sep):
if not s: return [''] # consistent with string.split()
p=chr(ord(max(s))+1)
return s.replace(sep, sep+p).split(p)
Затем мы пройдем некоторые стандартные шаги:
html = """
[<span class="search_review_summary positive" data-tooltip-html="Very Positive<br>86% of the 1,013 user reviews for this game are positive."></span>]
"""
from bs4 import BeautifulSoup as bs4
soup = bs4(html, 'html.parser')
info = soup.select('span')[0].get("data-tooltip-html")
print(info)
Вывод на данный момент:
Very Positive<br>86% of the 1,013 user reviews for this game are positive.
Далее мы идем:
data = ''.join(c for c in info if (c.isdigit()) or c == '%')
print(data)
Вывод немного лучше:
86%1013
Почти там;теперь число участников :
split_and_keep(data, '%')
Конечный результат:
['86%', '1013']