Jupyter笔记本输出单元语法突出显示

时间:2016-10-17 11:58:52

标签: ipython jupyter-notebook

我正在使用Jupyter笔记本(Python 2.7上的IPython)。

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

print dom.toprettyxml(indent='  ')

但它在输出格式中被格式化为明文。

我想将它与语法高亮显示在一起。有可能吗?

我遇到了与Markdown,Latex和其他几个人的IPython.display,但没有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))))

2 个答案:

答案 0 :(得分:2)

将代码正确标记为答案。

感谢您的反馈,我可以使用以下代码完成任务:

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))))

谢谢你, 罗伯特

答案 1 :(得分:0)

正如 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>'))