Skip to main content
 首页 » 编程设计

python之在python中匹配html标签

2025年05月04日12leader

我正在编写一个 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)