Clé*_*ent 1 python regex xml 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
Run Code Online (Sandbox Code Playgroud)
然后,给定a 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |