我正在使用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))))
答案 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>'))