从字符串中提取3个整数的Python方法

3
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

也许正则表达式可以帮上忙?
编辑:
我目前有一个包含numbers = []的列表,例如。
numbers = """
270069
11271
90603"""

如果我输入numbers[0],那么3个整数会显示为一个值,请问如何去除换行符,并将它们转化为包含3个独立值的列表或数组?


变量和函数名应该遵循 lower_case_with_underscores 风格。 - AMC
你好,亲爱的安德鲁,今天过得如何?我收到了以下结果:Traceback (most recent call last): File "/tmp/atom_script_tempfiles/0c9e3b30-6d27-11ea-84a4-095d4171334a", line 2, in worldometers.info NameError: name 'worldometers' is not defined [Finished in 0.069s]我在 MX-Linux 上使用 Atom,但不知道为什么会出现这种情况! - zero
3个回答

1
是的,一些简单的正则表达式应该可以解决。
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

这很有帮助,但结果将所有3个整数作为1个数组返回,我该如何将它们提取为3个单独的整数?我尝试了numbers [0],但它是一个只有1个值的数组,因此仍然会在一个数组中给出3个组合整数。您如何拆分'\n'并将其转换为新的int或string?抱歉,我是新手。 - HelloWorld1337
这是一个 ValueError,因为数字只有一个值。错误代码是 ValueError: not enough values to unpack (expected 3, got 1) - HelloWorld1337

1
你可以使用以下标记:

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]

它有点有效,但它将所有3个整数作为列表中的一个值返回,我该如何获取3个单独的值?谢谢 - HelloWorld1337
看一下输出结果,在哪里可以看到值1?你可以使用my_numbers[0]来访问第一个。例如:) - kederrac
原来我是在for循环中打印它,这是我的错误,感谢您的帮助! - HelloWorld1337

0
你可以使用以下的split方法。
intAsString = '123\n1234\n12345'
listOfInts = intAsString.split('\n')

在这里,listOfInts将是['123','1234','12345']

在Python中,\n是换行符,因此按换行符拆分应该会给出三个数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接