python将html转为markdown并将markdown中不同代码块根据不同语言进行高亮
时间: 2024-11-03 15:16:07 浏览: 35
在Python中,你可以利用第三方库如`mistune`和`pygments`来实现HTML到Markdown的转换,并对代码块进行语法高亮。`mistune`是一个轻量级的Markdown解析器,而`pygments`则是一个强大的代码高亮工具。
首先,你需要安装这两个库,可以使用pip命令:
```bash
pip install mistune pygments
```
然后,你可以编写一个简单的脚本,示例如下:
```python
import mistune
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import MarkdownFormatter
def html_to_markdown(html):
markdown = mistune.html(html)
def code_block(language, code):
lexer = get_lexer_by_name(language, stripall=True)
formatter = MarkdownFormatter()
return highlight(code, lexer, formatter)
# 使用正则表达式查找并替换代码块
regex = r'<pre><code class="lang-(\w+)">(.*?)</code></pre>'
def replace_code(match):
lang, code = match.groups()
highlighted_code = code_block(lang, code)
return f"```{lang}\n{highlighted_code}\n```"
markdown = re.sub(regex, replace_code, markdown)
return markdown
# 测试用法
html_content = ... # 你的HTML字符串
markdown_output = html_to_markdown(html_content)
print(markdown_output)
```
这个脚本会识别HTML中的代码块标签(`<pre><code>...</code></pre>`),根据`class`属性中的语言名称,使用相应的Pygments风格进行高亮渲染,然后插入到生成的Markdown文本中。
阅读全文