gpt4 book ai didi

python - 如何将单个正则表达式组与多个后续组组合

转载 作者:行者123 更新时间:2023-12-01 08:23:12 27 4
gpt4 key购买 nike

我正在修改现有的 Python 脚本,该脚本使用正则表达式从 HTML 计划中提取文本。该脚本运行良好,除了一种如下所示的情况(大大简化):

<tr>
<td class="month">September</td>
<td class="date">1</td>
<td class="date">8</td>
<td class="date">15<td>
</tr>

我想返回:

('September', '1'),
('September', '8'),
('September', '15'),

...使用单个正则表达式。编写正则表达式来捕获组很简单。我只是不知道如何使用正则表达式创建所需的输出。我尝试了环视、反向引用等多种组合。我认为这很简单,但就是找不到正确的正则表达式。如有任何帮助,我们将不胜感激。

此外,我完全意识到在 HTML 文本上使用正则表达式并不是最好的方法,但这个遗留系统运行良好,只需要处理这种情况。

同样,我知道我可以返回各个组并轻松地在 Python 中创建元组。这种后处理不太适合现有脚本。

最佳答案

不建议使用

regex 尝试解析 HTML。总会有不止一种“特殊情况”会妨碍你的表达。即使所需的输出可以在单个正则表达式中实现,如果以后 HTML 发生更改,代码也不容易维护。

解决此类问题的正常方法是使用 BeautifulSoup去做这个。对于您提供的 HTML,可以按如下方式完成:

from bs4 import BeautifulSoup

html = """<tr>
<td class="month">September</td>
<td class="date">1</td>
<td class="date">8</td>
<td class="date">15</td>
</tr>"""

soup = BeautifulSoup(html, "html.parser")

month = soup.find('td', class_='month').text
dates = [(month, date.text) for date in soup.find_all('td', class_='date')]

print(dates)

这将显示:

[('September', '1'), ('September', '8'), ('September', '15')]    

关于python - 如何将单个正则表达式组与多个后续组组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com