Возможно ли, чтобы какой-то вывод появился в другом цвете в ноутбуке IPython? Например, что-то вроде:
print("Hello Red World", color='red')
Возможно ли, чтобы какой-то вывод появился в другом цвете в ноутбуке IPython? Например, что-то вроде:
print("Hello Red World", color='red')
У ноутбука, конечно же, есть свое синтаксическое выделение. Поэтому я был бы осторожен при использовании цвета в другом месте, просто чтобы не сделать что-то труднее читать для себя или кого-то другого (например, вывод должен быть просто черным, но вы получите части красным, если есть исключение).
Но (к моему удивлению), кажется, что вы можете использовать escape-коды ANSI (даже в браузере). По крайней мере, я мог:
В командной строке Python по умолчанию:
>>> print("\x1b[31m\"red\"\x1b[0m")
"red"
В записной книжке:
In [28]: print("\x1b[31m\"red\"\x1b[0m")
"red"
(Очевидно, я обманул здесь синтаксическую подсветку SO, чтобы "красный" был напечатан красным цветом в обоих примерах. Я не думаю, что SO позволяет пользователю устанавливать цвет для текста.)
Я бы не знал другого способа получить цвета.
Для получения дополнительной информации об escape-кодах ANSI я бы предложил статью Wikipedia. И если вы найдете вышеописанное выше, вы можете, конечно, написать вокруг него оберточную функцию.
Вы можете использовать эту библиотеку termcolor, и вы можете получить все другие официальные библиотеки Python в PyPi
См. Документацию в pypi.python.org или выполните следующие действия.
- pip install termcolor
- тогда иди ипайтон
Код
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
print colored("hello red world", 'red')
Выход:
hello world
hello red world
Первый аргумент - это то, что вы хотите напечатать на консоли, а второй аргумент - этот цвет.
Вот быстрый взлом:
from IPython.display import HTML as html_print
def cstr(s, color='black'):
return "<text style=color:{}>{}</text>".format(color, s)
left, word, right = 'foo' , 'abc' , 'bar'
html_print(cstr(' '.join([left, cstr(word, color='red'), right]), color='black') )
[из]:
Если вам нужен только один цвет: html_print(cstr('abc', 'red'))
Не с сырой печатью Python. Вам нужно будет определить _repr_html_
объекта и вернуть его или вызвать IPython.lib.display(object_with_repr_html)
.
Я думаю, вы могли бы перезаписать встроенную печать, чтобы сделать это автоматически...
Вы можете вдохновить http://nbviewer.ipython.org/5098827, код в основе github, обсуждение ML здесь.
Похоже на то, что упоминал @alvas, но проще
from IPython.display import Markdown
display (Markdown('this is in <span style="color: #ff0000">red</span> color.'))
Существует цветная библиотека (pip install colored
color), которую вы можете использовать для изменения строки, чтобы получить цветовые коды для изменения способа ее печати. Пример использования:
import colored
print colored.bg("white") + colored.fg("red") + "Hello world!"
Используя @Evert ответ, вот метод, который бы обернул список токенов красным и вернул выделенную строку
def color_in_tokens(tokens, color_token_contains="_"):
"""
Highlights the tokens which contain 'color_token_contains'
:param tokens: list of strings
:param color_token_contains: str (the string for marking a token red)
:return: str
"""
return " ".join(["\x1b[31m%s\x1b[0m" % i if color_token_contains in i else i for i in tokens])
colorama
упрощает задачу:
from colorama import Fore
print(Fore.RED + "this is red")