python - 在python中匹配html标签

标签 python xml regex xpath

我正在编写一个 python 片段来修复 HTML 代码中标题的大小写。到目前为止,我想出了这段代码:

pattern = re.compile("<h1>(.*)</h1>|<h2>(.*)</h2>|<h3>(.*)</h3>|<h4>(.*)</h4>|<h5>(.*)</h5>|<h6>(.*)</h6>")

def replace(m):
    contents = m.group(1)
    replacement = contents[0] + contents[1:].lower()
    return replacement

然后,给定一个 line ,我使用的转换是 line = pattern.sub(replace, line) .

这行不通,因为 m.group(1)总是 None ,而我希望它是与我的正则表达式中的任何子句对应的匹配项。由于模式不能在 python 中共享名称,所以我有点不知所措。

一个明显的解决方案是将我使用的所有模式分组,然后 <h1>bla</h2>会被认可。这不好,因为 <h1><a href="...">Bla</a></h1> <h2>Bla</h2>应该产生两个匹配项( <a href="...">Bla</a><a href="...">Bla</a> )

想法?

最佳答案

据我了解,您只想将所有标题都大写。您可以使用 lxml这将使这相当轻松:

import lxml.html

doc = lxml.html.parse(your_html)
for i in range(1,7):
    for h in doc.xpath('//h%d' % i):
        h.text = h.text.capitalize()

print lxml.html.tostring(doc)

关于python - 在python中匹配html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6633491/

相关文章:

java - Android CalendarView 年份文本颜色

javascript - 密码的正则表达式,规则很少

php - 如何操作字符串以便在数学表达式中显式显示隐式乘法?

python - 如何在 CSV Python 2.7 中仅搜索精确值?

android - 自定义印地语键盘

python - Pyinstaller: cx_Oracle.InterfaceError: 无法获取 Oracle 环境句柄

java - Mule 3.2 中的分离器

python - 使用 Python 正则表达式匹配不带点的单词

python - 如何有效地混淆 Python 代码?

python - 我应该在每个虚拟环境中安装 conda 吗?