IPython Notebookで特定の出力を異なる色で表示することはどういうわけか可能ですか?たとえば、次の行に沿ったもの:
print("Hello Red World", color='red')
もちろん、ノートブックには独自の構文強調表示があります。そのため、自分や他の人が読みにくくなるのを避けるために、他の場所で色を使用する場合は注意が必要です(たとえば、出力は単に黒で表示されますが、例外がある場合は赤で表示されます)。
しかし(驚いたことに)、ブラウザでもANSIエスケープコードを使用できるようです。少なくとも、私はできました:
デフォルトではPythonプロンプト:
>>> print("\x1b[31m\"red\"\x1b[0m")
"red"
ノートブック内:
In [28]: print("\x1b[31m\"red\"\x1b[0m")
"red"
(明らかに、私はここでSOの構文ハイライトでごまかしたので、両方の例で "red"が赤色で印刷されます。SO =ユーザーはテキストの色を設定できます。)
色を取得する別の方法を本当に知りません。
ANSIエスケープコードの詳細については、 Wikipediaの記事 をお勧めします。また、上記の内容が冗長であることがわかった場合は、もちろんこれについてラッパー関数を作成できます。
このライブラリを使用できます termcolor そして、PyPiでpythonの他のすべての公式ライブラリを取得できます
Pypi.python.orgのドキュメントを参照するか、次の手順に従ってください
- pip install termcolor
- その後、ipythonに移動します
コード
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
print colored("hello red world", 'red')
出力:
hello world
hello red world
最初の引数はコンソールに印刷したいもので、2番目の引数はその色を使用します
ここに簡単なハックがあります:
_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'))
Raw Python print。ではありません。オブジェクトで_repr_html_
を定義して返すか、IPython.lib.display(object_with_repr_html)
を呼び出す必要があります。
内蔵の印刷を上書きして自動的に実行できると思います...
http://nbviewer.ipython.org/5098827 、コード githubの要点 、MLの議論 here からインスピレーションを受けることができます。
@alvasが言及したものに似ていますが、より単純です
from IPython.display import Markdown
display (Markdown('this is in <span style="color: #ff0000">red</span> color.'))
色付きライブラリ (pip install colored
)、文字列を変更してカラーコードを取得し、印刷方法を変更するために使用できます。使用例:
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])