Как я могу получить более одной цифры, используя скобки в регулярных выражениях - PullRequest
2 голосов
/ 25 октября 2019

Я пытался извлечь значения из HTML-кода, используя urllib и регулярные выражения в python3, и когда я попытался запустить этот код, он дал мне только одну из цифр числа вместо обоих значений, даже если я добавил "+ знак, означающий один или несколько раз. Что здесь не так?

import re
import urllib.error,urllib.parse,urllib.request
from bs4 import BeautifulSoup
finalnums=[]
sumn=0
urlfile = urllib.request.urlopen("http://py4e-data.dr-chuck.net/comments_42.html")

html=urlfile.read()
soup = BeautifulSoup( html,"html.parser" )
spantags = soup("span")
for span in spantags:
    span=span.decode()  
    numlist=re.findall(".+([0-9].*)<",span)
    print(numlist)
    finalnums.extend(numlist)
for anum in finalnums:
    sumn=sumn+int(anum)
print("Sum = ",sumn)

Это пример строки, из которой я пытаюсь извлечь число:

 <span class="comments">54</span>

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Поскольку в каждом теге <span> есть только один номер:

sumn = 0
for span in spantags:
    sumn += int(re.search(r'\d+', span.decode()).group(0))
0 голосов
/ 25 октября 2019

Используйте numlist=re.findall("\d+",span) для поиска всех смежных групп цифровых символов.

\d - это класс символов, эквивалентный [0-9], поэтому он также будет работать, если вы сделали numlist=re.findall("[0-9]+",span)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...