Печать f-строк в цвете в Jupyter с escape-символами в миксе - PullRequest
0 голосов
/ 18 апреля 2019

Я знаю, что подобные вопросы задавались ранее, но я не мог найти что-то точно на месте.Скажем, у меня есть этот список:

tags = ['<div>','<body>','<h1>']

Я могу легко использовать f-строки здесь:

for tag in tags:
   print(f'this is your tag: {tag}')

Вывод:

this is your tag: <div>
this is your tag: <body>
this is your tag: <h1>

Пока все хорошо.Но я действительно пытаюсь сделать, это получить тот же вывод, но с именами тегов, напечатанными, например, красным.И вот тут я сталкиваюсь с проблемами со скобками.Если я использую:

from IPython.display import HTML as html_print

for tag in tags:
     html_print(f'this is your tag: {tag}')

, то ничего не печатается - даже если я удаляю теги.

Я пытался:

from IPython.display import Markdown, display

А потом сначала:

for tag in tags:
   display(f'this is your tag: {tag}')

Это работает как обычный print.

Если, однако, я пытаюсь:

for tag in tags:    
   display(Markdown((f'this is your tag: {tag}')))

Вывод:

this is your tag:
this is your tag:
this is your tag: 

MyЯ понимаю, что мне нужно Markdown для цветной печати, но очевидно, что квадратные скобки вызывают проблемы с f-строками в Markdown, в отличие от print и display.Так как мне обойти это?

1 Ответ

0 голосов
/ 22 апреля 2019

Благодаря @hpaulj (в комментариях к вопросу) у нас теперь есть хороший и простой ответ - добавьте html.escape(tag) к коду. Окончательный состав выглядит так:

from IPython.display import Markdown, display
import html

for tag in tags:    
    tag = html.escape(tag)
    display(Markdown((f'this is your tag: <text style=color:red>{tag}</text>')))

Выход:

enter image description here

Просто и эффективно ...

...