我正在尝试从.md源文件中编程生成html。
如果我在使用Remarkable标记的python3编辑器中编辑它们,它就能工作。我的意思是从编辑器导出的html是正确的。例如,源
~~~~python
import os, sys
~~~~生成html,其近似呈现为
import os, sys但是,当我的python脚本试图呈现文本时,这个语法似乎不受支持。击剑标记只是出现在输出中,而不是被解析。我基本上是这么做的:
html = markdown.markdown(md_text)Python似乎无法识别fenced_code扩展:
>>> 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式的击剑是一样的(在我的剧本中效果不佳).块缩进似乎只是做块引号高亮显示。
发布于 2017-09-06 19:58:25
你犯的第一个错误..。
AttributeError: module 'markdown.extensions' has no attribute 'fenced_code'...is,因为您还没有导入markdown.extensions.fenced_code
>>> import markdown.extensions.fenced_code但是,还有第二个问题,即extensions关键字获取一个列表:
>>> markdown.markdown (markdown_text, extensions=markdown.extensions.fenced_code)
TypeError: 'module' object is not iterable但实际上,markdown.markdown方法并没有期望一个模块:
>>> markdown.markdown (markdown_text, extensions=[markdown.extensions.fenced_code])
TypeError: Extension "builtins.module" must be of type: "markdown.Extension"您可以按照错误的要求传递类实例,也可以将扩展名作为字符串传递给markdown:
>>> markdown.markdown (markdown_text, extensions=['fenced_code'])希望这是显而易见的,但使用此模型,您也不需要使用此机制导入markdown.extensions.fenced_code,因为您从未使用模块名。也就是说,这是一个完整的例子:
#!/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库的情况下,该扩展才能工作。
https://stackoverflow.com/questions/46083138
复制相似问题