首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3标记到html:如何启用代码围栏/语法突出显示

Python 3标记到html:如何启用代码围栏/语法突出显示
EN

Stack Overflow用户
提问于 2017-09-06 19:40:57
回答 1查看 3.2K关注 0票数 1

我正在尝试从.md源文件中编程生成html。

如果我在使用Remarkable标记的python3编辑器中编辑它们,它就能工作。我的意思是从编辑器导出的html是正确的。例如,源

代码语言:javascript
复制
~~~~python
import os, sys
~~~~

生成html,其近似呈现为

代码语言:javascript
复制
import os, sys

但是,当我的python脚本试图呈现文本时,这个语法似乎不受支持。击剑标记只是出现在输出中,而不是被解析。我基本上是这么做的:

代码语言:javascript
复制
html = markdown.markdown(md_text)

Python似乎无法识别fenced_code扩展:

代码语言:javascript
复制
>>> markdown.markdown (markdown_text, extensions=markdown.extensions.fenced_code)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'markdown.extensions' has no attribute 'fenced_code'
>>> dir (markdown.extensions)
['Extension', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'parseBoolValue', 'unicode_literals', 'warnings']

我假设相关的扩展必须在那里,因为Remarkable正在正确地处理代码。

如何启用代码围栏/语法高亮显示?

Github式的击剑是一样的(在我的剧本中效果不佳).块缩进似乎只是做块引号高亮显示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-06 19:58:25

你犯的第一个错误..。

代码语言:javascript
复制
AttributeError: module 'markdown.extensions' has no attribute 'fenced_code'

...is,因为您还没有导入markdown.extensions.fenced_code

代码语言:javascript
复制
>>> import markdown.extensions.fenced_code

但是,还有第二个问题,即extensions关键字获取一个列表:

代码语言:javascript
复制
>>> markdown.markdown (markdown_text, extensions=markdown.extensions.fenced_code)
TypeError: 'module' object is not iterable

但实际上,markdown.markdown方法并没有期望一个模块:

代码语言:javascript
复制
>>> markdown.markdown (markdown_text, extensions=[markdown.extensions.fenced_code])
TypeError: Extension "builtins.module" must be of type: "markdown.Extension"

您可以按照错误的要求传递类实例,也可以将扩展名作为字符串传递给markdown

代码语言:javascript
复制
>>> markdown.markdown (markdown_text, extensions=['fenced_code'])

希望这是显而易见的,但使用此模型,您也不需要使用此机制导入markdown.extensions.fenced_code,因为您从未使用模块名。也就是说,这是一个完整的例子:

代码语言:javascript
复制
#!/usr/bin/python3

import markdown

markdown_text = '''# This is a test

~~~~python
import os, sys
~~~~
'''

print(markdown.markdown(markdown_text,
                        extensions=['fenced_code', 'codehilite']))

注意,代码突出显示是由一个codehilite扩展提供的,只有在安装了pygments库的情况下,该扩展才能工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46083138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档