web-dev-qa-db-ja.com

ipython Notebookで異なる色を使用して印刷することは可能ですか?

IPython Notebookで特定の出力を異なる色で表示することはどういうわけか可能ですか?たとえば、次の行に沿ったもの:

 print("Hello Red World", color='red')
46
Rabarberski

もちろん、ノートブックには独自の構文強調表示があります。そのため、自分や他の人が読みにくくなるのを避けるために、他の場所で色を使用する場合は注意が必要です(たとえば、出力は単に黒で表示されますが、例外がある場合は赤で表示されます)。

しかし(驚いたことに)、ブラウザでもANSIエスケープコードを使用できるようです。少なくとも、私はできました:

デフォルトではPythonプロンプト:

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

ノートブック内:

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

(明らかに、私はここでSOの構文ハイライトでごまかしたので、両方の例で "red"が赤色で印刷されます。SO =ユーザーはテキストの色を設定できます。)

色を取得する別の方法を本当に知りません。

ANSIエスケープコードの詳細については、 Wikipediaの記事 をお勧めします。また、上記の内容が冗長であることがわかった場合は、もちろんこれについてラッパー関数を作成できます。

52
user707650

このライブラリを使用できます termcolor そして、PyPiでpythonの他のすべての公式ライブラリを取得できます

Pypi.python.orgのドキュメントを参照するか、次の手順に従ってください

  1. pip install termcolor
  2. その後、ipythonに移動します

コード

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

出力:

hello world
hello red world

最初の引数はコンソールに印刷したいもので、2番目の引数はその色を使用します

22
anand tripathi

ここに簡単なハックがあります:

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

16
alvas

Raw Python print。ではありません。オブジェクトで_repr_html_を定義して返すか、IPython.lib.display(object_with_repr_html)を呼び出す必要があります。

内蔵の印刷を上書きして自動的に実行できると思います...

http://nbviewer.ipython.org/5098827 、コード githubの要点 、MLの議論 here からインスピレーションを受けることができます。

13
Matt

@alvasが言及したものに似ていますが、より単純です

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

色付きライブラリpip install colored)、文字列を変更してカラーコードを取得し、印刷方法を変更するために使用できます。使用例:

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

@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を呼び出すだけです: enter image description here

1
Roei Bahumi