Jupyter notebook 输出单元语法高亮显示

Jupyter notebook output cell syntax highlighting

我正在使用 Jupyter notebook(IPython on Python 2.7)。

我想动态显示一些 XML 内容,例如:

print dom.toprettyxml(indent='  ')

但它在输出单元格中被格式化为纯文本。

我想把它和语法高亮一起展示。可能吗?

我遇到过 IPython.display Markdown、Latex 和其他几个,但没有 XML。 (HTML 也在那里,但对我没有帮助)。

此致, 罗伯特

更新: 感谢反馈,我能够使用以下代码完成任务:

from pygments import highlight
from pygments.lexers import XmlLexer
from pygments.formatters import HtmlFormatter
import IPython

def display_xml_nice(xml_element):
    formatter = HtmlFormatter()
    xml_indented = xml_element.toprettyxml(indent='  ')
    IPython.display.display(HTML('<style type="text/css">{}</style>{}'.format(
        formatter.get_style_defs('.highlight'),
        highlight(xml_indented, XmlLexer(), formatter))))

将代码正确标记为答案。

感谢反馈,我能够使用以下代码完成任务:

from pygments import highlight
from pygments.lexers import XmlLexer
from pygments.formatters import HtmlFormatter
import IPython

def display_xml_nice(xml_element):
    formatter = HtmlFormatter()
    xml_indented = xml_element.toprettyxml(indent='  ')
    IPython.display.display(HTML('<style type="text/css">{}</style>    {}'.format(
    formatter.get_style_defs('.highlight'),
    highlight(xml_indented, XmlLexer(), formatter))))

谢谢, 罗伯特

Jay 所述,您也可以使用 IPython.display.Code,但这只有在您使用 Jupyter Notebook 时才有效。

from IPython.display import Code
Code('print("Hello World")', language='python')

使用 Jupyter Lab 时,虽然它不会 运行 如预期的那样,如 this GitHub issue 中所述,因此您需要 运行 以下位才能使其正常工作:

from pygments.formatters import HtmlFormatter
from IPython.core.display import HTML

formatter = HtmlFormatter()

display(HTML(f'<style>{ formatter.get_style_defs(".highlight") }</style>'))