使用BeautifulSoup处理标签内容时如何只提取其中的纯数字
提取数字75的实现方法
你可以通过以下两种常用方式实现需求:
方案1:字符串分割(适合固定格式场景)
不需要引入额外依赖,直接对拿到的文本做切割处理即可:
soup = BeautifulSoup(text, 'lxml') size_text = item.find(class_='list-card__item-size').text # 先按冒号分割取后半段,去除首尾空白后按空白字符分割,取第一个元素就是目标数字 number = size_text.split(':')[-1].strip().split()[0] print(number)
方案2:正则匹配(容错性更高)
如果页面结构可能发生微调,推荐用正则匹配提取数字,兼容性更好:
import re from bs4 import BeautifulSoup soup = BeautifulSoup(text, 'lxml') size_text = item.find(class_='list-card__item-size').text # 匹配连续的数字字符,如需支持小数可将正则改为 r'\d+\.?\d*' number = re.search(r'\d+', size_text).group() print(number)
两种方案执行后都可以直接输出字符串格式的75,如需转换为数字类型,额外加int(number)转换即可。
内容的提问来源于stack exchange,提问作者Vlad Vladov
相关产品推荐
相关产品推荐

