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

如何在Python中用正则表达式从webelement提取字符串并存入列表

实现方案

原代码问题说明

  • 正则匹配逻辑倒置:你需要先匹配Accountant开头的行提取姓名,再匹配下一行的职位,原正则要求行首为vice-president,和实际文本结构完全不匹配
  • 字符匹配规则错误:实际文本中职位是Vice President(空格分隔、首字母大写),你写的是vice-president(连字符、全小写),不存在匹配可能
  • 没有处理文本的换行分组逻辑:原始文本按【姓名行+职位行】成对排列,你没有做对应分组处理

可直接运行的实现代码

方案1:逐行分组处理(可读性更高)

import re

# raw_text替换为你的webelement.text
raw_text = """Accountant Johnathan Christensen <br>
President<br>
Accountant Annete Benning<br>
Vice President
"""

result = []
# 先清洗<br>标签,拆分有效行
valid_lines = [line.replace("<br>", "").strip() for line in raw_text.splitlines() if line.strip()]

# 按两行一组遍历提取内容
for idx in range(0, len(valid_lines), 2):
    # 提取姓名:Accountant后面的所有内容
    name = re.search(r"Accountant\s+(.+)", valid_lines[idx]).group(1)
    # 处理职位:替换空格为连字符,匹配要求的输出格式
    position = valid_lines[idx+1].replace(" ", "-")
    result.append([name, position])

print(result)

运行输出:

[['Johnathan Christensen', 'President'], ['Annete Benning', 'Vice-President']]

方案2:单条正则一次性匹配

import re

raw_text = """Accountant Johnathan Christensen <br>
President<br>
Accountant Annete Benning<br>
Vice President
"""

# 直接匹配成对的姓名+职位
matches = re.findall(r"Accountant\s+(.+?)\s*<br>\s*(.+?)\s*(?:<br>|$)", raw_text)
result = [[name, pos.replace(" ", "-")] for name, pos in matches]
print(result)

内容的提问来源于stack exchange,提问作者Eduardo Rosa Kras Borges

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:15:02