Подтвердить что ты не робот

Можно ли печатать разными цветами в ipython Notebook?

Возможно ли, чтобы какой-то вывод появился в другом цвете в ноутбуке IPython? Например, что-то вроде:

 print("Hello Red World", color='red')
4b9b3361

Ответ 1

У ноутбука, конечно же, есть свое синтаксическое выделение. Поэтому я был бы осторожен при использовании цвета в другом месте, просто чтобы не сделать что-то труднее читать для себя или кого-то другого (например, вывод должен быть просто черным, но вы получите части красным, если есть исключение).

Но (к моему удивлению), кажется, что вы можете использовать escape-коды ANSI (даже в браузере). По крайней мере, я мог:

В командной строке Python по умолчанию:

>>> print("\x1b[31m\"red\"\x1b[0m")
"red"

В записной книжке:

In [28]: print("\x1b[31m\"red\"\x1b[0m")
         "red"

(Очевидно, я обманул здесь синтаксическую подсветку SO, чтобы "красный" был напечатан красным цветом в обоих примерах. Я не думаю, что SO позволяет пользователю устанавливать цвет для текста.)

Я бы не знал другого способа получить цвета.

Для получения дополнительной информации об escape-кодах ANSI я бы предложил статью Wikipedia. И если вы найдете вышеописанное выше, вы можете, конечно, написать вокруг него оберточную функцию.

Ответ 2

Вы можете использовать эту библиотеку termcolor, и вы можете получить все другие официальные библиотеки Python в PyPi

См. Документацию в pypi.python.org или выполните следующие действия.

  1. pip install termcolor
  2. тогда иди ипайтон

Код

from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
print colored("hello red world", 'red')

Выход:

hello world
hello red world

Первый аргумент - это то, что вы хотите напечатать на консоли, а второй аргумент - этот цвет.

Ответ 3

Вот быстрый взлом:

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

[из]:

enter image description here

Если вам нужен только один цвет: html_print(cstr('abc', 'red'))

Ответ 4

Не с сырой печатью Python. Вам нужно будет определить _repr_html_ объекта и вернуть его или вызвать IPython.lib.display(object_with_repr_html).

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

Вы можете вдохновить http://nbviewer.ipython.org/5098827, код в основе github, обсуждение ML здесь.

Ответ 5

Похоже на то, что упоминал @alvas, но проще

from IPython.display import Markdown
display (Markdown('this is in <span style="color: #ff0000">red</span> color.'))

Ответ 6

Существует цветная библиотека (pip install colored color), которую вы можете использовать для изменения строки, чтобы получить цветовые коды для изменения способа ее печати. Пример использования:

import colored
print colored.bg("white") + colored.fg("red") + "Hello world!"

Ответ 7

Используя @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])

Просто нажмите print на возвращаемой строке: введите описание изображения здесь

Ответ 8

colorama упрощает задачу:

from colorama import Fore
print(Fore.RED + "this is red")