【发布时间】:2021-02-05 22:42:25
【问题描述】:
我有一个 html 文件,其中包含重复的 code 标签:
<h3>Post header content</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cum, delectus.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam culpa illo necessitatibus
officia sed totam. Aspernatur cupiditate debitis eos obcaecati! Dolores eveniet excepturi hic optio.
</p>
<code class="code">
$ pip install --no-cache-dir -r requirements.txt
</code>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Accusamus et hic neque, suscipit totam ullam.</p>
<code class="code">
// Linux
export FLASK_APP=app.py
export FLASK_ENV=development
// Windows
set FLASK_APP=app.py
set FLASK_ENV=development
</code>
<p>More text...</p>
我想找到所有 code 标签,用它们做一些刺痛操作并返回到源字符串。
这是我的代码片段:
import re
def code2replace(code):
# find all code fragments
RE_CODE = r'<code[^>]+>(.*?)<\/code>'
matches = re.finditer(RE_CODE, code, re.S)
rs_text = ''
code_text = ''
pos_start = 0
for match in matches:
# print(f'Start: {match.start()}, End: {match.end()}, Content: {match.group(1)}')
code_text = match.group(1).replace('\n', '\n<br/>')
rs_text += code[pos_start: match.start()] + f'<code class="code">{code_text}</code>'
pos_start = match.end()
return rs_text
但不幸的是,这不能正常工作。
那么,如何改变这个html中code标签的内容并返回改变的结果呢?
【问题讨论】:
-
您是否考虑过使用合适的 HTML 解析器?
-
FWIW 我同意@tobias_k,使用正则表达式解析 HTML 通常被认为是一种糟糕的编程习惯。