在Python和Selenium中如何提取文本中的数字并赋值给变量?
在Python与Selenium环境中提取文本中的数字并赋值给变量
需求:从类似 text = "Your verification code is: 5674" 的文本里提取数字 5674 并赋值给变量 x,最终得到 x = 5674。
你提供的参考代码里的 is_digit() 并非正确用法,Python 中没有直接的全局函数 is_digit() 用于提取文本中的数字,正确做法是借助正则表达式模块 re 实现,以下是具体方案:
基础文本提取示例
如果是处理固定文本,可直接用正则匹配连续数字:
import re txt = "Your verification code is: 5674" # 搜索第一个连续数字序列 match_result = re.search(r'\d+', txt) if match_result: # 提取匹配到的数字并转为整数 x = int(match_result.group()) print(x) # 输出:5674
如果文本中存在多个数字,可用 re.findall() 获取所有数字序列:
import re txt = "Your verification code is: 5674, expire in 10 minutes" # 获取所有连续数字 all_numbers = re.findall(r'\d+', txt) # 取第一个数字赋值给x if all_numbers: x = int(all_numbers[0]) print(x) # 输出:5674
Selenium 环境下的实际应用
在Selenium中,通常先从页面元素获取文本,再提取数字,示例代码如下:
from selenium import webdriver import re # 初始化浏览器驱动 driver = webdriver.Chrome() # 打开目标页面 driver.get("你的目标页面URL") # 获取页面中包含目标数字的元素文本(这里用xpath示例,可根据实际改用id、class等定位方式) target_element = driver.find_element("xpath", "//*[contains(text(), 'verification code')]") txt = target_element.text # 提取数字并赋值 match_result = re.search(r'\d+', txt) if match_result: x = int(match_result.group()) print(x) # 输出提取到的数字 # 关闭浏览器 driver.quit()
正则表达式说明
r'\d+' 是核心匹配规则:
\d:匹配单个数字字符(0-9)+:表示匹配前面的字符一次或多次,确保能提取连续的多位数字
内容的提问来源于stack exchange,提问作者somaye soodmand
相关产品推荐
相关产品推荐

