使用 IPython/Jupyter 可以使用 IPython display module and its MarkDown
class 输出 markdown .
问题
如何使用 Azure Databricks 实现此目的?
我尝试了什么
Databricks 显示
尝试使用 Databrick 的显示与 IPython Markdown 类:
from IPython.display import Markdown
display(Markdown('*some markdown* test'))
但这会导致以下错误:
Exception: Cannot call display(<class 'IPython.core.display.Markdown'>)
IPython 显示
然后我尝试使用 IPython 的 display
:
from IPython.display import display, Markdown
display(Markdown('*some markdown* test'))
但这只是显示文本:
<IPython.core.display.Markdown object>
IPython display_markdown
尝试使用 IPython 的 display_markdown
:
from IPython.display import display_markdown
display_markdown('# Markdown is here!\n*some markdown*\n- and\n- some\n- more')
但这会导致什么也没有显示:
查找文档
还尝试检查 Azure Databricks 文档。一开始我访问了https://www.databricks.com/databricks-documentation这引导我到 https://learn.microsoft.com/en-ca/azure/databricks/但我无法通过搜索或单击链接找到任何内容,而且我通常发现 Microsoft 文档非常好。
检查 Databrick 的显示
源
正如 Saideep Arikontham 在评论中提到的,Databricks 版本 11 及更高版本使用 IPython 内核,因此我进行了更深入的研究。
根据 Databrick 的 display
函数源代码,它将轻松呈现任何实现 _repr_html()
的对象。
但是,我很难获得原始 html 输出,我假设 IPython.display.Markdown
应该能够输出。我只能找到 _repr_markdown_()
和 _data_and_metadata()
where the former just calls the latter并且输出(至少在 Databricks 中)只是原始的原始 Markdown 字符串。
最佳答案
Markdown
和 display_markdown
在 Azure Databricks 中使用时未提供所需的输出。我在 Databricks 11.1 运行时中完成了以下操作。
- 从问题中获取输入,我了解到当类具有
_repr_html()
时,它能够输出所需的结果。但是当类中不存在此方法时,它会返回一个对象。 - 因此,为了使
Markdown
正常工作,我编写了自己的Markdown
类,其中使用了 Python 的markdown
库.
from IPython.display import DisplayObject, TextDisplayObject
class Markdown(TextDisplayObject):
def __init__(self,TextDisplayObject):
import markdown as md
#converting markdown to html
self.html = md.markdown(TextDisplayObject)
def _repr_html_(self):
return self.html
- 现在,这个类与
IPython.display.Markdown
并不完全相同。我已经格式化了你的示例 Markdown'# Markdown is here!\n*some markdown*\n- and\n- some\n- more'
如下以获得所需的结果。
Markdown('''# Markdown is here!\n
*some markdown*\n
- and\n
- some\n
- more''')
注意:
要使
display_markdown()
显示输出,我们必须将另一个参数 raw 指定为True
(display_markdown(, raw=True))。但是,在 Databricks 中,它返回未定义 (NoneType)。 请先在 Databricks 单元中使用
%pip install markdown
安装 Markdown 库。
关于databricks - 如何从 python 单元在 databricks 笔记本中显示 markdown 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73551155/