75

IPython Notebookで特定の出力を別の色で表示することは何とか可能ですか? たとえば、次のようなものです。

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

13 に答える 13

77

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

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

デフォルトの Python プロンプト:

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

ノートブックで:

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

(明らかに、SO の構文の強調表示でここでごまかして、両方の例で「赤」が赤で印刷されるようにしました。SO ではユーザーがテキストの色を設定できないと思います。)

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

ANSI エスケープ コードの詳細については、ウィキペディアの記事をお勧めします。上記が冗長であることがわかった場合は、もちろん、これを囲むラッパー関数を記述できます。

于 2013-05-29T14:38:31.457 に答える
14

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

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

http://nbviewer.ipython.org/5098827 、 github の要点のコード、ここでの ML ディスカッションからインスピレーションを得ることができます。

于 2013-05-29T14:37:54.757 に答える
0

出典:端末の ANSI 色の標準

このスニペットでは、すべての色を 1 行で表示できます。

RESET = "\x1b[0m"
print("To reset attributes: \\x1b[0m\n")
for i in range(0, 8):
    print("\x1b[1;3{0}m\\x1b[1;3{0}m{1} \x1b[0;3{0}m\\x1b[0;3{0}m{1} "
          "\x1b[1;4{0};3{0}m\\x1b[1;3{0};4{0}m{1}".format(i, RESET))
于 2020-02-05T11:21:22.940 に答える