You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从指定HTML代码中提取可变位数的浮点数?

如何用Python从指定HTML中提取可变位数的浮点数

这里有两种实用的方法可以帮你提取目标浮点数,而且完全支持位数可变的格式(比如2.4、2490.30这类):

方法一:直接用正则表达式处理HTML字符串

因为你的HTML结构比较简单,直接用正则匹配整个内容就能快速拿到结果。我们用\d+\.\d+这个正则模式,它可以匹配任意位数的整数部分+小数点+任意位数的小数部分的浮点数。

import re

# 你的HTML内容
html_content = """<html> <body> <p> BSE##B#As on 17 Apr 18 | 16:00@C#7@P#@HL#249.30,251.50,252.55,246.80,248.20,Listed </p> </body> </html>"""

# 编译正则模式,匹配所有符合格式的浮点数
float_pattern = re.compile(r'\d+\.\d+')
# 提取所有匹配到的浮点数(字符串形式)
extracted_float_strings = float_pattern.findall(html_content)

# 可选:把字符串转换为数值类型的浮点数
extracted_floats = [float(num) for num in extracted_float_strings]

print("字符串形式的结果:", extracted_float_strings)
# 输出:['249.30', '251.50', '252.55', '246.80', '248.20']
print("数值形式的结果:", extracted_floats)
# 输出:[249.3, 251.5, 252.55, 246.8, 248.2]

方法二:用BeautifulSoup解析HTML后再提取(更规范)

如果之后你的HTML结构变得复杂,比如有多个标签、无关内容,用BeautifulSoup先定位到目标文本所在的标签,再用正则匹配会更可靠,避免误匹配其他无关的浮点数。

首先你需要安装BeautifulSoup:pip install beautifulsoup4

然后运行下面的代码:

from bs4 import BeautifulSoup
import re

html_content = """<html> <body> <p> BSE##B#As on 17 Apr 18 | 16:00@C#7@P#@HL#249.30,251.50,252.55,246.80,248.20,Listed </p> </body> </html>"""

# 解析HTML文档
soup = BeautifulSoup(html_content, 'html.parser')
# 定位到目标p标签,提取它的文本内容
target_text = soup.find('p').get_text()

# 同样用正则匹配浮点数
float_pattern = re.compile(r'\d+\.\d+')
extracted_float_strings = float_pattern.findall(target_text)
extracted_floats = [float(num) for num in extracted_float_strings]

print(extracted_float_strings)
print(extracted_floats)

正则扩展说明

如果需要支持带负号的浮点数(比如-24.5),可以把正则模式改成:r'-?\d+\.\d+'

如果需要同时支持整数(比如2490)和浮点数,可以改成:r'-?\d+(?:\.\d+)?'

内容的提问来源于stack exchange,提问作者yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:25:05