Pythonで色付きのテキストを端末に出力するにはどうすればよいですか?
56 に答える
これは、使用しているプラットフォームによって多少異なります。これを行う最も一般的な方法は、ANSIエスケープシーケンスを印刷することです。簡単な例として、 BlenderビルドスクリプトからのPythonコードを次に示します。
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
このようなコードを使用するには、次のようなことを行うことができます。
print(bcolors.WARNING + "Warning: No active frommets remain. Continue?" + bcolors.ENDC)
または、Python 3.6以降の場合:
print(f"{bcolors.WARNING}Warning: No active frommets remain. Continue?{bcolors.ENDC}")
これは、OS X、Linux、およびWindowsを含むUNIXで機能します(ANSICONを使用している場合、またはWindows 10ではVT100エミュレーションを有効にしている場合)。色の設定、カーソルの移動などのためのANSIコードがあります。
これで複雑になる場合(そしてゲームを書いている場合のように聞こえます)、これの複雑な部分の多くを処理する「 curses 」モジュールを調べる必要があります。PythonCursesHowTOは良い入門書です。
拡張ASCIIを使用していない場合(つまり、PC上ではない場合)、127未満のASCII文字でスタックしているため、「#」または「@」がブロックの最善の策である可能性があります。端末がIBM拡張ASCII文字セットを使用していることを確認できる場合は、さらに多くのオプションがあります。文字176、177、178、および219は「ブロック文字」です。
「DwarfFortress」などの一部の最新のテキストベースのプログラムは、グラフィックモードでテキストモードをエミュレートし、クラシックPCフォントの画像を使用します。Dwarf Fortress Wikiで使用できるこれらのビットマップのいくつかを見つけることができます(ユーザー作成のタイルセット)。
テキストモードデモコンテストには、テキストモードでグラフィックスを実行するためのより多くのリソースがあります。
Python termcolor モジュールもあります。使い方はとても簡単です:
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
または Python 3 の場合:
print(colored('hello', 'red'), colored('world', 'green'))
ただし、ゲームのプログラミングややりたい「色付きのブロック」については、十分に洗練されていない可能性があります...
ANSIコードをWindowsで動作させるには、最初に実行します
os.system('color')
答えは、Python でのすべてのクロスプラットフォーム カラーリングのColoramaです。
Python 3.5+ と Python 2.7 をサポートしています。
そして2021年1月現在、維持されています。
色/スタイル、次に文字列を開始する文字列を出力し、色/スタイルの変更を次のように終了し'\x1b[0m'
ます。
print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')
次のコードを使用して、シェル テキストの形式オプションの表を取得します。
def print_format_table():
"""
prints table of formatted text format options
"""
for style in range(8):
for fg in range(30,38):
s1 = ''
for bg in range(40,48):
format = ';'.join([str(style), str(fg), str(bg)])
s1 += '\x1b[%sm %s \x1b[0m' % (format, format)
print(s1)
print('\n')
print_format_table()
ライト オン ダークの例 (完全)
ダーク オン ライトの例 (一部)
色を開始する文字列と色を終了する文字列を定義します。次に、先頭に開始文字列、最後に終了文字列を付けてテキストを印刷します。
CRED = '\033[91m'
CEND = '\033[0m'
print(CRED + "Error, does not compute!" + CEND)
これにより、urxvt
Zenburn スタイルの配色で、Bash に次のものが生成されます。
実験を通じて、より多くの色を得ることができます。
注:\33[5m
と\33[6m
が点滅しています。
このようにして、フルカラー コレクションを作成できます。
CEND = '\33[0m'
CBOLD = '\33[1m'
CITALIC = '\33[3m'
CURL = '\33[4m'
CBLINK = '\33[5m'
CBLINK2 = '\33[6m'
CSELECTED = '\33[7m'
CBLACK = '\33[30m'
CRED = '\33[31m'
CGREEN = '\33[32m'
CYELLOW = '\33[33m'
CBLUE = '\33[34m'
CVIOLET = '\33[35m'
CBEIGE = '\33[36m'
CWHITE = '\33[37m'
CBLACKBG = '\33[40m'
CREDBG = '\33[41m'
CGREENBG = '\33[42m'
CYELLOWBG = '\33[43m'
CBLUEBG = '\33[44m'
CVIOLETBG = '\33[45m'
CBEIGEBG = '\33[46m'
CWHITEBG = '\33[47m'
CGREY = '\33[90m'
CRED2 = '\33[91m'
CGREEN2 = '\33[92m'
CYELLOW2 = '\33[93m'
CBLUE2 = '\33[94m'
CVIOLET2 = '\33[95m'
CBEIGE2 = '\33[96m'
CWHITE2 = '\33[97m'
CGREYBG = '\33[100m'
CREDBG2 = '\33[101m'
CGREENBG2 = '\33[102m'
CYELLOWBG2 = '\33[103m'
CBLUEBG2 = '\33[104m'
CVIOLETBG2 = '\33[105m'
CBEIGEBG2 = '\33[106m'
CWHITEBG2 = '\33[107m'
テストを生成するコードは次のとおりです。
x = 0
for i in range(24):
colors = ""
for j in range(5):
code = str(x+j)
colors = colors + "\33[" + code + "m\\33[" + code + "m\033[0m "
print(colors)
x = x + 5
ANSI エスケープ シーケンスについて学習します。簡単な例を次に示します。
CSI = "\x1B["
print(CSI+"31;40m" + "Colored Text" + CSI + "0m")
詳細については、ANSI エスケープ コードを参照してください。
ブロック文字の場合は、\u2588 のような Unicode 文字を試してください:
print(u"\u2588")
すべてを一緒に入れて:
print(CSI+"31;40m" + u"\u2588" + CSI + "0m")
私のお気に入りの方法は、Blessingsライブラリを使用することです (完全な開示: 私が書きました)。例えば:
from blessings import Terminal
t = Terminal()
print t.red('This is red.')
print t.bold_bright_red_on_black('Bright red on black')
色付きのレンガを印刷する場合、最も確実な方法は、スペースを背景色で印刷することです。私はこのテクニックを使用して、ノーズプログレッシブでプログレスバーを描画します:
print t.on_green(' ')
特定の場所に印刷することもできます。
with t.location(0, 5):
print t.on_yellow(' ')
ゲームの過程で他の端末機能をいじる必要がある場合は、それも行うことができます。Python の標準の文字列フォーマットを使用して、読みやすくすることができます。
print '{t.clear_eol}You just cleared a {t.bold}whole{t.normal} line!'.format(t=t)
Blessings の良いところは、(圧倒的に一般的な) ANSI カラーの端末だけでなく、あらゆる種類の端末で動作するよう最善を尽くしていることです。また、使用する簡潔さを維持しながら、読み取り不能なエスケープ シーケンスをコードから除外します。楽しむ!
ループを使用してすべての色のクラスを生成し、色のすべてのfor
組み合わせを 100 まで反復処理してから、Python の色を使用してクラスを作成しました。私がGPLv2をコピーして貼り付けます:
class colors:
'''Colors class:
Reset all colors with colors.reset
Two subclasses fg for foreground and bg for background.
Use as colors.subclass.colorname.
i.e. colors.fg.red or colors.bg.green
Also, the generic bold, disable, underline, reverse, strikethrough,
and invisible work with the main class
i.e. colors.bold
'''
reset='\033[0m'
bold='\033[01m'
disable='\033[02m'
underline='\033[04m'
reverse='\033[07m'
strikethrough='\033[09m'
invisible='\033[08m'
class fg:
black='\033[30m'
red='\033[31m'
green='\033[32m'
orange='\033[33m'
blue='\033[34m'
purple='\033[35m'
cyan='\033[36m'
lightgrey='\033[37m'
darkgrey='\033[90m'
lightred='\033[91m'
lightgreen='\033[92m'
yellow='\033[93m'
lightblue='\033[94m'
pink='\033[95m'
lightcyan='\033[96m'
class bg:
black='\033[40m'
red='\033[41m'
green='\033[42m'
orange='\033[43m'
blue='\033[44m'
purple='\033[45m'
cyan='\033[46m'
lightgrey='\033[47m'
Windowsでは、モジュール'win32console'(一部のPythonディストリビューションで利用可能)またはモジュール'ctypes'(Python 2.5以降)を使用してWin32APIにアクセスできます。
両方の方法をサポートする完全なコードを確認するには、Testoobのカラーコンソールレポートコードを参照してください。
ctypesの例:
import ctypes
# Constants from the Windows API
STD_OUTPUT_HANDLE = -11
FOREGROUND_RED = 0x0004 # text color contains red.
def get_csbi_attributes(handle):
# Based on IPython's winconsole.py, written by Alexander Belchenko
import struct
csbi = ctypes.create_string_buffer(22)
res = ctypes.windll.kernel32.GetConsoleScreenBufferInfo(handle, csbi)
assert res
(bufx, bufy, curx, cury, wattr,
left, top, right, bottom, maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
return wattr
handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
reset = get_csbi_attributes(handle)
ctypes.windll.kernel32.SetConsoleTextAttribute(handle, FOREGROUND_RED)
print "Cherry on top"
ctypes.windll.kernel32.SetConsoleTextAttribute(handle, reset)
これは、私の意見では、最も簡単な方法です。必要な色の RGB 値がある限り、これは機能するはずです。
def colored(r, g, b, text):
return "\033[38;2;{};{};{}m{} \033[38;2;255;255;255m".format(r, g, b, text)
赤いテキストを印刷する例:
text = 'Hello, World!'
colored_text = colored(255, 0, 0, text)
print(colored_text)
#or
print(colored(255, 0, 0, 'Hello, World!'))
マルチカラーのテキスト
text = colored(255, 0, 0, 'Hello, ') + colored(0, 255, 0, 'World')
print(text)
joeld の回答を、コード内のどこでも使用できるグローバル関数を含むモジュールにラップしました。
ファイル: log.py
def enable():
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = "\033[1m"
def disable():
HEADER = ''
OKBLUE = ''
OKGREEN = ''
WARNING = ''
FAIL = ''
ENDC = ''
def infog(msg):
print(OKGREEN + msg + ENDC)
def info(msg):
print(OKBLUE + msg + ENDC)
def warn(msg):
print(WARNING + msg + ENDC)
def err(msg):
print(FAIL + msg + ENDC)
enable()
次のように使用します。
import log
log.info("Hello, World!")
log.err("System Error")
def black(text):
print('\033[30m', text, '\033[0m', sep='')
def red(text):
print('\033[31m', text, '\033[0m', sep='')
def green(text):
print('\033[32m', text, '\033[0m', sep='')
def yellow(text):
print('\033[33m', text, '\033[0m', sep='')
def blue(text):
print('\033[34m', text, '\033[0m', sep='')
def magenta(text):
print('\033[35m', text, '\033[0m', sep='')
def cyan(text):
print('\033[36m', text, '\033[0m', sep='')
def gray(text):
print('\033[90m', text, '\033[0m', sep='')
black("BLACK")
red("RED")
green("GREEN")
yellow("YELLOW")
blue("BLACK")
magenta("MAGENTA")
cyan("CYAN")
gray("GRAY")
私はこれをやってしまいましたが、それが最もきれいだと感じました:
formatters = {
'RED': '\033[91m',
'GREEN': '\033[92m',
'END': '\033[0m',
}
print 'Master is currently {RED}red{END}!'.format(**formatters)
print 'Help make master {GREEN}green{END} again!'.format(**formatters)
Windows の場合、 Win32 APIを使用していない限り、色付きでコンソールに出力することはできません。
Linux の場合は、print を使用するのと同じくらい簡単です。エスケープ シーケンスの概要は次のとおりです。
文字がボックスのように印刷されるかどうかは、コンソール ウィンドウに使用しているフォントによって異なります。ポンド記号はうまく機能しますが、フォントによって異なります。
#
joeld 's answerに基づいて、ばかばかしいほど単純です:
class PrintInColor:
RED = '\033[91m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
LIGHT_PURPLE = '\033[94m'
PURPLE = '\033[95m'
END = '\033[0m'
@classmethod
def red(cls, s, **kwargs):
print(cls.RED + s + cls.END, **kwargs)
@classmethod
def green(cls, s, **kwargs):
print(cls.GREEN + s + cls.END, **kwargs)
@classmethod
def yellow(cls, s, **kwargs):
print(cls.YELLOW + s + cls.END, **kwargs)
@classmethod
def lightPurple(cls, s, **kwargs):
print(cls.LIGHT_PURPLE + s + cls.END, **kwargs)
@classmethod
def purple(cls, s, **kwargs):
print(cls.PURPLE + s + cls.END, **kwargs)
それからちょうど
PrintInColor.red('hello', end=' ')
PrintInColor.green('world')
with
キーワードが、リセットが必要な次のような修飾子とどのように混ざっているかに注意してください(Python 3 と Colorama を使用):
from colorama import Fore, Style
import sys
class Highlight:
def __init__(self, clazz, color):
self.color = color
self.clazz = clazz
def __enter__(self):
print(self.color, end="")
def __exit__(self, type, value, traceback):
if self.clazz == Fore:
print(Fore.RESET, end="")
else:
assert self.clazz == Style
print(Style.RESET_ALL, end="")
sys.stdout.flush()
with Highlight(Fore, Fore.GREEN):
print("this is highlighted")
print("this is not")
Clintを使用できます:
from clint.textui import colored
print colored.red('some warning message')
print colored.green('nicely done!')
cursesライブラリ の Python 実装を使用できます。 curses — 文字セル表示の端末処理
また、これを実行すると、ボックスが見つかります。
for i in range(255):
print i, chr(i)
ゲームをプログラミングしている場合、おそらく背景色を変更してスペースのみを使用したいですか?例えば:
print " "+ "\033[01;41m" + " " +"\033[01;46m" + " " + "\033[01;42m"
Windowsを使用している場合は、ここに移動します。
# Display text on a Windows console
# Windows XP with Python 2.7 or Python 3.2
from ctypes import windll
# Needed for Python2/Python3 diff
try:
input = raw_input
except:
pass
STD_OUTPUT_HANDLE = -11
stdout_handle = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
# Look at the output and select the color you want.
# For instance, hex E is yellow on black.
# Hex 1E is yellow on blue.
# Hex 2E is yellow on green and so on.
for color in range(0, 75):
windll.kernel32.SetConsoleTextAttribute(stdout_handle, color)
print("%X --> %s" % (color, "Have a fine day!"))
input("Press Enter to go on ... ")
絵文字
回答で他の人が言及したように、テキストに色を使用して、背景色または前景色のカラフルなテキストを作成できます。
ただし、代わりに絵文字を使用できます。たとえば、⚠️
警告メッセージやエラー メッセージに使用できます。
または、単にこれらのノートを色として使用します。
: error message
: warning message
: ok status message
: action message
: canceled status message
: Or anything you like and want to recognize immediately by color
ボーナス:
この方法は、ソース コード内のログを直接すばやくスキャンして見つけるのにも役立ちます。
ただし、一部のオペレーティング システム (一部のウィンドウ マネージャーを備えた一部のバージョンの一部の Linux ディストリビューションを含む) のデフォルトの絵文字フォントは、デフォルトではカラフルではないため、最初にカラフルにしたい場合があります。
Djangoを使用している場合:
>>> from django.utils.termcolors import colorize
>>> print colorize("Hello, World!", fg="blue", bg='red',
... opts=('bold', 'blink', 'underscore',))
Hello World!
>>> help(colorize)
スナップショット:
(runserver 端末でのデバッグには通常カラー出力を使用するので、追加しました。)
マシンにインストールされているかどうかをテストできます
$ python -c "import django; print django.VERSION"
: インストールするには、以下を確認してください: Django のインストール方法
試してみてください!!
cursesの例を次に示します。
import curses
def main(stdscr):
stdscr.clear()
if curses.has_colors():
for i in xrange(1, curses.COLORS):
curses.init_pair(i, i, curses.COLOR_BLACK)
stdscr.addstr("COLOR %d! " % i, curses.color_pair(i))
stdscr.addstr("BOLD! ", curses.color_pair(i) | curses.A_BOLD)
stdscr.addstr("STANDOUT! ", curses.color_pair(i) | curses.A_STANDOUT)
stdscr.addstr("UNDERLINE! ", curses.color_pair(i) | curses.A_UNDERLINE)
stdscr.addstr("BLINK! ", curses.color_pair(i) | curses.A_BLINK)
stdscr.addstr("DIM! ", curses.color_pair(i) | curses.A_DIM)
stdscr.addstr("REVERSE! ", curses.color_pair(i) | curses.A_REVERSE)
stdscr.refresh()
stdscr.getch()
if __name__ == '__main__':
print "init..."
curses.wrapper(main)
Python 3 のprint関数をラップするさらに別のPyPIモジュール:
https://pypi.python.org/pypi/colorprint
また、Python 2.x でも使用できますfrom __future__ import print
。モジュールの PyPI ページからの Python 2 の例を次に示します。
from __future__ import print_function
from colorprint import *
print('Hello', 'world', color='blue', end='', sep=', ')
print('!', color='red', format=['bold', 'blink'])
「Hello, world!」を出力します。単語は青色で、感嘆符は太字の赤色で点滅しています。
https://raw.github.com/fabric/fabric/master/fabric/colors.py
"""
.. versionadded:: 0.9.2
Functions for wrapping strings in ANSI color codes.
Each function within this module returns the input string ``text``, wrapped
with ANSI color codes for the appropriate color.
For example, to print some text as green on supporting terminals::
from fabric.colors import green
print(green("This text is green!"))
Because these functions simply return modified strings, you can nest them::
from fabric.colors import red, green
print(red("This sentence is red, except for " + \
green("these words, which are green") + "."))
If ``bold`` is set to ``True``, the ANSI flag for bolding will be flipped on
for that particular invocation, which usually shows up as a bold or brighter
version of the original color on most terminals.
"""
def _wrap_with(code):
def inner(text, bold=False):
c = code
if bold:
c = "1;%s" % c
return "\033[%sm%s\033[0m" % (c, text)
return inner
red = _wrap_with('31')
green = _wrap_with('32')
yellow = _wrap_with('33')
blue = _wrap_with('34')
magenta = _wrap_with('35')
cyan = _wrap_with('36')
white = _wrap_with('37')
asciimaticsは、テキスト UI とアニメーションを構築するための移植可能なサポートを提供します。
#!/usr/bin/env python
from asciimatics.effects import RandomNoise # $ pip install asciimatics
from asciimatics.renderers import SpeechBubble, Rainbow
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.exceptions import ResizeScreenError
def demo(screen):
render = Rainbow(screen, SpeechBubble('Rainbow'))
effects = [RandomNoise(screen, signal=render)]
screen.play([Scene(effects, -1)], stop_on_resize=True)
while True:
try:
Screen.wrapper(demo)
break
except ResizeScreenError:
pass
アシキャスト:
組み込みパッケージのみを使用する場合は、次の構造に従います。
実際、私はMohamed Samyの回答を強化しました。これは現在、複数の入力と数値を担当しています。print()
また、などの他の引数もサポートしていend=
ます。.store()
さらに、ログをファイルに書き留めるためのメソッドも追加しました。
コードの任意の場所で使用するユーティリティを作成できます。
# utility.py
from datetime import datetime
class ColoredPrint:
def __init__(self):
self.PINK = '\033[95m'
self.OKBLUE = '\033[94m'
self.OKGREEN = '\033[92m'
self.WARNING = '\033[93m'
self.FAIL = '\033[91m'
self.ENDC = '\033[0m'
def disable(self):
self.PINK = ''
self.OKBLUE = ''
self.OKGREEN = ''
self.WARNING = ''
self.FAIL = ''
self.ENDC = ''
def store(self):
date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open('logfile.log', mode='a') as file_:
file_.write(f"{self.msg} -- {date}")
file_.write("\n")
def success(self, *args, **kwargs):
self.msg = ' '.join(map(str, args))
print(self.OKGREEN + self.msg + self.ENDC, **kwargs)
return self
def info(self, *args, **kwargs):
self.msg = ' '.join(map(str, args))
print(self.OKBLUE + self.msg + self.ENDC, **kwargs)
return self
def warn(self, *args, **kwargs):
self.msg = ' '.join(map(str, args))
print(self.WARNING + self.msg + self.ENDC, **kwargs)
return self
def err(self, *args, **kwargs):
self.msg = ' '.join(map(str, args))
print(self.FAIL + self.msg + self.ENDC, **kwargs)
return self
def pink(self, *args, **kwargs):
self.msg = ' '.join(map(str, args))
print(self.PINK + self.msg + self.ENDC, **kwargs)
return self
例えば
from utility import ColoredPrint
log = ColoredPrint()
log.success("Hello" , 123, "Bye").store()
log.info("Hello" , 123, "Bye")
log.warn("Hello" , 123, "Bye")
log.err("Hello" , 123, "Bye").store()
log.pink("Hello" , 123, "Bye")
外:
[アップデート]:
現在、その PyPIパッケージが利用可能です。
pip install python-colored-print
キャラクターのために
お使いの端末はおそらく Unicode (通常は UTF-8 でエンコードされた) 文字を使用しているため、適切なフォントを選択するだけで、お気に入りの文字が表示されます。Unicode char U+2588、「フル ブロック」を使用することをお勧めします。
次のことを試してください。
import unicodedata
fp= open("character_list", "w")
for index in xrange(65536):
char= unichr(index)
try: its_name= unicodedata.name(char)
except ValueError: its_name= "N/A"
fp.write("%05d %04x %s %s\n" % (index, index, char.encode("UTF-8"), its_name)
fp.close()
後でお気に入りのビューアでファイルを調べます。
色について
この新しいライブラリPrintyをお勧めします。彼らは、クロスプラットフォーム ライブラリとしてバージョン 1.2.0 をリリースしました。
確認してください: GitHub の Printy
フラグに基づいているため、次のようなことができます
from printy import printy
# With global flags, this will apply a bold (B) red (r) color and an underline (U) to the whole text
printy("Hello, World!", "rBU")
# With inline formats, this will apply a dim (D)
#blue (b) to the word 'Hello' and a stroken (S)
#yellow (y) to the word 'world', and the rest will remain as the predefined format
printy("this is a [bD]Hello@ [yS]world@ text")
http://pypi.python.org/pypi/colorconsoleで入手できる簡単なモジュールを 作成しました。
Windows、Mac OS X、および Linux で動作します。Linux と Mac では ANSI を使用しますが、Windows ではコンソール関数へのネイティブ呼び出しを使用します。色、カーソル位置、キーボード入力があります。curses に代わるものではありませんが、単純なスクリプトや ASCII ゲームで使用する必要がある場合は非常に便利です。
私が見つけることができる最も簡単な方法は、ANSI エスケープ コードを使用するのではなく、Fore
from import moduleを使用することですcolorama
。以下のコードを見てください。
from colorama import Fore, Style
print(Fore.MAGENTA + "IZZ MAGENTA BRUH.")
print(Style.RESET_ALL + "IZZ BACK TO NORMALZ.")
ANSI エスケープ コードとの比較:
print("\u001b[31m IZZ RED (NO MAGENTA ON ANSI CODES).\u001b[0m")
print("BACK TO NORMALZ.")
print("\033[1;32;40m Bright Green \n")
この問題に対処するために、icolorと呼ばれる補間されたカラーコードで文字列を印刷するための非常にシンプルなパッケージを作成しました。
icolorには、次の2つの関数が含まれています。cformat
およびcprint
、それぞれが、ANSIエスケープシーケンスにマップするために補間されるサブ文字列を含む文字列を取ります。
from icolor import cformat # there is also cprint
cformat("This is #RED;a red string, partially with a #xBLUE;blue background")
'This is \x1b[31ma red string, partially with a \x1b[44mblue background\x1b[0m'
すべてのANSIカラー(たとえば#RED;
、#BLUE;
など)、#RESET;
および#BOLD;
その他が含まれています。
背景色にはx
接頭辞が付いているため、緑の背景はになります#xGREEN;
。
で逃げることができ#
ます##
。
その単純さを考えると、最良のドキュメントはおそらくコード自体です。
PYPIにあるので、できsudo easy_install icolor
ます。