Python извлечь 3 целых числа из строки - PullRequest
3 голосов
/ 20 марта 2020
from bs4 import BeautifulSoup
URL = "https://www.worldometers.info/coronavirus/"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
countHTML = soup.find('div', attrs = {'class':'content-inner'})

for countVar in countHTML.findAll('div', attrs = {'class':'maincounter-number'}):
    count = countVar.span

Прямо сейчас переменная count возвращает:

<span style="color:#aaa">270,069</span>
<span>11,271</span>
<span>90,603</span>

Мне нужна помощь по извлечению 3 отдельных целых чисел из этой строки, я пробовал count[0], но это не массив, поэтому он делает не работает.

String1 = "270,069"
String2 = "11,271"
String3 = "90,603"

Затем преобразуется в 3 целых числа, удаляя запятую

Int1 = 270069
Int2 = 11271
Int3 = 90603

Возможно, Regex поможет?

Редактировать:

I в настоящее время numbers = [] имеет в качестве одного значения в списке, например,

numbers = """
270069
11271
90603"""

, поэтому, если я введу числа [0], все 3 целых числа будут отображаться как 1 значение, как я удаляю новые строки, и сделать их списком или массивом с 3 отдельными значениями?

Ответы [ 3 ]

1 голос
/ 20 марта 2020

вы можете использовать:

my_numbers = []
for countVar in countHTML.findAll('div', attrs = {'class':'maincounter-number'}):
    my_numbers.append(int(countVar.span.text.strip().replace(',', '')))

print(my_numbers)

выход:

[270104, 11272, 90603]
1 голос
/ 20 марта 2020

Да, какое-то простое регулярное выражение должно работать.

s = '''<span style="color:#aaa">270,069</span>
<span>11,271</span>
<span>90,603</span>'''

num_strs = re.findall('[0-9,]+', s)

numbers = [int(ns.replace(',', '')) for ns in num_strs]

# Extract to variables
num1, num2, num3 = numbers
0 голосов
/ 20 марта 2020

Вы можете использовать метод разделения следующим образом

intAsString = '123\n1234\n12345'
listOfInts = intAsString.split('\n')

Здесь listOfInts будет ['123', '1234', '12345']

В python, \ n - символ новой строки, поэтому разделение по Новая строка должна дать вам три цифры

...