Python:如何向 re.sub() 的替换参数添加计数器

标签 python html regex html-parsing auto-increment

我想将 id 添加到 html 标签。例如,我想更改:

<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>

<p id="1">First paragraph</p>
<p id="2">Second paragraph</p>
<p id="3">Third paragraph</p>

IIRC,可以使用 lambda 函数来实现此功能,但我不记得确切的语法。

最佳答案

我会使用 HTML 解析器,例如 BeautifulSoup .

想法是使用 enumerate() 遍历所有段落用于索引,从 1 开始:

from bs4 import BeautifulSoup

data = """
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
"""

soup = BeautifulSoup(data, 'html.parser')
for index, p in enumerate(soup.find_all('p'), start=1):
    p['id'] = index

print soup

打印:

<p id="1">First paragraph</p>
<p id="2">Second paragraph</p>
<p id="3">Third paragraph</p>

关于Python:如何向 re.sub() 的替换参数添加计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26678773/

相关文章:

python - 从骨架图像计算图形

javascript - 如果所有三个单选按钮均为 false,则不验证

html - 我可以根据光标位置更改按钮位置吗?

javascript - 用于查找自定义 URL 的正则表达式

c# - 为什么这个正则表达式模式会导致解析器在给定某些输入时挂起?

python - 将 Dash 应用程序部署到 Azure - 应用程序对象必须可调用

python - Python 中的 MVC 模型结构

python - 不可变容器内的可变类型

javascript - javascript 是否依赖于声明的位置? JavaScript 程序的奇怪行为

python - Pyramid 替换 URL Matchdict 中的双正斜杠