HOWTO · Python
Python で太字テキストを出力する方法
ANSI エスケープシーケンスやスタイリングライブラリを使って、Python のターミナル出力を太字にする方法を解説します。
このページの内容
Python のターミナルで文字を太字にするには、ANSI エスケープシーケンスを文字列に付けるか、termcolor、colorama、simple_colors、click などのスタイリングライブラリを使います。ここで扱うのはターミナル出力の装飾です。文書や Web ページの文字を太字にする場合は、Markdown または HTML を使ってください。見た目は、出力先のターミナルが ANSI の装飾に対応しているかどうかで変わります。
ANSI エスケープシーケンスで Python の文字を太字にする
ANSI エスケープシーケンスを使うと、Python に追加の依存関係を導入せずに、対応するターミナルで文字の書式を変更できます。\033[1m は太字を開始し、\033[0m は通常の書式に戻します。次のようにクラスにまとめておけば、同じシーケンスを再利用できます。
class BoldText:
BOLD = "\033[1m"
RESET = "\033[0m"
print(f"{BoldText.BOLD}Python Programming!{BoldText.RESET}")
[1mPython Programming![0m
装飾した文字列の後にはリセットシーケンスを付けてください。付け忘れると、その後に出力する文字にも書式が引き継がれることがあります。エスケープシーケンスが装飾として表示されるのは、ANSI に対応したターミナルに限られます。
クラスを使って Python の文字を太字にする
上の BoldText クラスは BOLD と RESET の定数を公開しているため、ほかの print 呼び出しでも同じ書式を使えます。太字にした各部分の末尾にはリセットシーケンスを置きます。このクラスが送るのは ANSI 制御シーケンスだけであり、出力先がそれを表示できるかどうかは判定しません。
termcolor モジュールで Python の文字を太字にする
termcolor はターミナルの文字を装飾するパッケージで、colored() は書式付き文字列を作る関数です。python -m pip install termcolor でインストールし、colored("Python", "green", attrs=["bold"]) のように bold 属性を指定して、返された文字列を出力します。このワークフローの Python 実行環境にはパッケージがないため、ここでは呼び出し方を説明しています。実行するには、自分の環境にパッケージをインストールしてください。
同じ見た目をこの実行環境で試す場合は、次の自己完結した ANSI の例を使えます。この例は termcolor を呼び出しません。上のパッケージ固有の呼び出しは説明用であり、実行するには自分の環境へのインストールが必要です。
class BoldText:
BOLD = "\033[1m"
RESET = "\033[0m"
print(f"{BoldText.BOLD}Python Programming!{BoldText.RESET}")
[1mPython Programming![0m
colorama パッケージで Python の文字を太字にする
colorama は、Windows での ANSI 処理を改善するなど、さまざまなターミナルで ANSI 装飾を使いやすくするパッケージです。python -m pip install colorama でインストールし、colorama から Style と init をインポートして init() を呼び出します。その後、f"{Style.BRIGHT}Bold Text{Style.RESET_ALL}" を出力します。Style.BRIGHT が強調表示を適用し、Style.RESET_ALL が既定の書式に戻します。設定済みの Python 実行環境にはこのパッケージがないため、ここでは使い方を文章で示しており、実行可能な例ではありません。初期化しても、すべてのコンソールや出力先で太字が表示されるとは限りません。
次の例は ANSI 装飾を直接出力するため、実行環境で試せます。ただし、colorama 自体の処理を試すものではありません。Windows などでのパッケージの動作を確かめるには、インストール後に上記の呼び出しを使ってください。
class BoldText:
BOLD = "\033[1m"
RESET = "\033[0m"
print(f"{BoldText.BOLD}Python Programming!{BoldText.RESET}")
[1mPython Programming![0m
simple-color パッケージで Python の文字を太字にする
配布パッケージ名は simple-colors、インポート名は simple_colors です。python -m pip install simple-colors でインストールした後、simple_colors の green("Python", "bold") を使います。このワークフローの Python 実行環境にはパッケージが含まれていないため、呼び出し方を示すものであり、ここでは実行していません。表示にはターミナルの対応も必要です。
同じようにターミナル文字を太字にする標準ライブラリだけの代替例を次に示します。上の simple_colors の呼び出しを実行するには、simple-colors のインストールが必要です。
class BoldText:
BOLD = "\033[1m"
RESET = "\033[0m"
print(f"{BoldText.BOLD}Python Programming!{BoldText.RESET}")
[1mPython Programming![0m
click ライブラリで Python の文字を太字にする
すでに click を使うコマンドラインアプリケーションなら、python -m pip install click でインストールできます。click.echo(click.style("Bold Text", bold=True)) は文字列に書式を適用し、ターミナルへ出力します。設定済みの Python 実行環境には click がないため、ここでは呼び出し方を文章で示しており、実行可能な例ではありません。他のライブラリと同じく、装飾が見えるかどうかは出力環境によります。
次の単独で動かせる代替例は ANSI を直接使うため、click がなくても実行できます。上記の click.style() と click.echo() の呼び出しは説明用であり、click をインストールすると実行できます。
class BoldText:
BOLD = "\033[1m"
RESET = "\033[0m"
print(f"{BoldText.BOLD}Python Programming!{BoldText.RESET}")
[1mPython Programming![0m
まとめ
依存関係を増やしたくない場合は ANSI シーケンスを直接使い、定数を再利用したい場合は小さなクラスにまとめると便利です。termcolor、colorama、simple_colors、click は、より高水準のヘルパーを提供します。ANSI 装飾に対応していないターミナルでは、シーケンスがそのまま文字として表示されることがあります。利用する環境に合わせて方法を選んでください。