Целые числа не имеют формы \d+\.\d+
, поэтому давайте сделаем десятичную точку и цифры необязательными с помощью ^\d+(?:\.\d+)?$
(обратите внимание на группу без захвата. Это важно).
Затем я попытался бы сопоставить каждый td.text
сам по себе:
req = Request("https://adrianchifu.com/teachings/AMSE/MAG1/project/Xlrda/dsuR/2/J9ED27Y.html")
a = urlopen(req).read()
soup = BeautifulSoup(a,'html.parser')
nombres = []
tds = soup.find_all('td')
for td in tds:
if re.match(r'^\d+(?:\.\d+)?$', td.text):
nombres.append(float(td.text))
print(nombres)
Это выводит
[89.169, 54.893, 19.212, 87.045, 2.248, 99.947, 6190.0, 83.096]
В качестве последнего улучшения я бы использовалсоставьте список с помощью скомпилированного регулярного выражения, чтобы немного улучшить производительность:
req = Request("https://adrianchifu.com/teachings/AMSE/MAG1/project/Xlrda/dsuR/2/J9ED27Y.html")
a = urlopen(req).read()
soup = BeautifulSoup(a,'html.parser')
tds = soup.find_all('td')
numbers_regex = re.compile(r'^\d+(?:\.\d+)?$')
nombres = [float(td.text) for td in tds if numbers_regex.match(td.text)]