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

如何使用Python正则表达式从指定HTML片段提取Size信息?

提取HTML中Size对应内容的正确实现方法

嘿,我来帮你搞定这个Size内容提取的问题~ 你的正则表达式其实差几步就对了,不过先给你两种可行的方案,其中更推荐用HTML解析库,因为正则处理HTML太容易踩坑啦:

方案一:修正你的正则表达式

你的正则有几个小问题需要调整:

  • 括号(s)是正则的特殊字符,得转义成\(s\);
  • 匹配内容的时候用非贪婪模式.+?更稳妥,避免意外匹配到多余内容;
  • 正则的结尾要闭合完整,不能断在中间。

修正后的完整代码:

import re

# 你的HTML片段
html = '<tr> <td style="padding-left: 5px;" class="subheader" valign="top" width="147" align="right">Size</td> <td valign="top" style="padding-left: 5px;">1.64 GB in 2 file(s)</td> </tr>'

# 修正后的正则
match_result = re.search(
    r'<tr> <td style="padding-left: 5px;" class="subheader" valign="top" width="147" align="right">Size</td> <td valign="top" style="padding-left: 5px;">(.+?) in \d+ file\(s\)</td> </tr>',
    html
)

if match_result:
    size = match_result.group(1)
    print(size)  # 输出:1.64 GB

方案二:用HTML解析库(强烈推荐)

正则处理HTML太脆弱了——比如哪天HTML里的属性顺序变了、多了个空格,正则就失效了。用BeautifulSoup这种专业的HTML解析库会靠谱得多:

首先先安装库(如果还没装的话):

pip install beautifulsoup4

然后写解析代码:

from bs4 import BeautifulSoup

html = '<tr> <td style="padding-left: 5px;" class="subheader" valign="top" width="147" align="right">Size</td> <td valign="top" style="padding-left: 5px;">1.64 GB in 2 file(s)</td> </tr>'
soup = BeautifulSoup(html, 'html.parser')

# 找到文本为"Size"的td标签,再取它的下一个兄弟td的内容
size_label_td = soup.find('td', string='Size')
if size_label_td:
    size_content = size_label_td.find_next_sibling('td').get_text(strip=True)
    # 如果只需要前面的数值+单位(比如1.64 GB),可以拆分字符串
    size_value = size_content.split(' in ')[0]
    print(size_value)  # 输出:1.64 GB

这种方法不管HTML标签的属性怎么调整,都能准确找到对应的内容,维护起来也方便很多~

内容的提问来源于stack exchange,提问作者maurizio de ruggiero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:41:09