Pythonでボールドテキストを印刷するにはどうすればよいですか?


162

Pythonでボールドテキストを印刷するにはどうすればよいですか?

例えば:

print "hello"

「hello」というテキストを太字で表示するにはどうすればよいですか。


2
unixのターミナルアプリケーションでのカラーテキストの複製。回答にたくさんのリンクがあります。その答えはCですが、Pythonに簡単に翻訳できます。
Joe

6
どの端末を使用していますか?UnixまたはWindowsを使用していますか?
Sjoerd、2012年

私はサファリを使用しています。PythonでHTMLタグを使用できることがわかりました。
Jia-Luo

回答:


379
class color:
   PURPLE = '\033[95m'
   CYAN = '\033[96m'
   DARKCYAN = '\033[36m'
   BLUE = '\033[94m'
   GREEN = '\033[92m'
   YELLOW = '\033[93m'
   RED = '\033[91m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
   END = '\033[0m'

print(color.BOLD + 'Hello World !' + color.END)

15
私は、あなたが太字をしただけでなく、それらが参照し、すべてのユーザーが見るのを助けるためのクラス全体を作成した方法が好きです。ありがとうございました。
GreenHawk1220 16

3
クラスではなく、これを口述として使用します。ありがとう!
dvlden 2017

6
:それは次のように印刷される[1mHello World ![0m

私のセットアップでの作業:ubuntu 19.10、python 3.7
Elouan Keryell-Even

ボールドとカラーを組み合わせることもできますか?@Boubakr
アルパー

62

これを使って:

print '\033[1m' + 'Hello'

そして、通常に戻すには:

print '\033[0m'

このページは、色とフォントの太さで印刷するための優れたリファレンスです。「グラフィックモードの設定」というセクションに移動します。

また、これはすべてのオペレーティングシステムで機能するわけではありませんが、モジュールは必要ありません。


31

これにはtermcolorを使用できます。

 sudo pip install termcolor

色付きの太字を印刷するには:

 from termcolor import colored
 print(colored('Hello', 'green', attrs=['bold']))

詳細については、PyPiのtermcolorを参照してください

simple-colorsは、同様の構文を持つ別のパッケージです。

 from simple_colors import *
 print(green('Hello', ['bold'])

コロラマの相当物はあるかもしれませんStyle.BRIGHT


8
もし誰かが太字で何かを印刷する実際の質問に答えなかったので、誰かがこれに反対票を投じたと推測する必要がある場合。
クリスチャン

あなたの権利、更新がありました。その人たちについては申し訳ありません。
オルスミス

22

まっすぐなコンピュータプログラミングでは、「大胆なテキストを印刷する」ようなものはありません。少しバックアップして、テキストがバイトのストリングであり、バイトはビットのバンドルにすぎないことを理解しましょう。コンピューターにとって、これがバイナリの「hello」テキストです。

0110100001100101011011000110110001101111

1または0はそれぞれビットです。8ビットごとが1バイトです。すべてのバイトは、Python 2.xのような文字列では、1つの文字/数字/句読点(文字と呼ばれます)です。だから例えば:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

コンピュータはこれらのビットを文字に変換しますが、従来の文字列(ASCII文字列と呼ばれます)では、太字のテキストを示すものはありません。動作が少し異なるUnicode文字列では、コンピューターは中国語の文字のような国際言語文字をサポートできますが、一部のテキストは太字で、一部のテキストは太字ではないことは言うまでもありません。明示的なフォント、テキストサイズなどもありません。

HTMLを印刷する場合でも、文字列を出力しています。しかし、その文字列を読み取るコンピュータープログラム(Webブラウザー)はthis is <b>bold</b>、「これは太字です。、文字列を画面上のピクセルに変換するときに、」のれています。すべてのテキストがWYSIWYGの場合、HTML自体の必要性は軽減されます。エディターでテキストを選択し、HTMLを入力する代わりに太字にするだけです。

他のプログラムは異なるシステムを使用しています-多くの回答は、端末で太字のテキストを印刷するための完全に異なるシステムを説明しました。やりたいことをする方法を見つけてよかったと思いますが、ある時点で、文字列とメモリがどのように機能するかを理解したくなるでしょう。


9
この答えは満足のいくものではないように思えるかもしれませんが、これはおそらく、質問どおりに最も適切に答えるものです。これはPythonの質問ではなく、レンダリングを行うためのあらゆる質問です。
John Y

8
問題は、この質問への回答に興味を持つすべての人が、バイナリと、それが文字列を表すためにどのように使用されるかを理解していることです。上記で回答したように、Pythonを使用してテキストを太字にする方法に興味があります。この答えは、知識をはるかに超えています。
Trevor

16

これは、linux / unixを使用しているかどうかによって異なります。

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.

単語textは太字である必要があります。


13

コロラマをチェックしてください。必ずしも太字にするのに役立つとは限りません...しかし、WindowsとLinuxの両方でカラー出力を行い、明るさを制御できます。

from colorama import *
init(autoreset=True)
print Fore.RED + 'some red text'
print Style.BRIGHT + Fore.RED + 'some bright red text'

13

Pythonでテキスト(太字、下線、色など)をフォーマットするための非常に便利なモジュールがあります。これは、使用していますcurseslibが、それは使用することは非常に単純明快です。

例:

from terminal import render
print render('%(BG_YELLOW)s%(RED)s%(BOLD)sHey this is a test%(NORMAL)s')
print render('%(BG_GREEN)s%(RED)s%(UNDERLINE)sAnother test%(NORMAL)s')

更新しました:

これを少しpythonicにするために、colors.pyという名前のシンプルなモジュールを書きました。

import colors

with colors.pretty_output(colors.BOLD, colors.FG_RED) as out:
    out.write("This is a bold red text")

with colors.pretty_output(colors.BG_GREEN) as out:
    out.write("This output have a green background but you " + 
               colors.BOLD + colors.FG_RED + "can" + colors.END + " mix styles")

2
ImportError: No module named terminal ImportError: No module named render 実際、これが「ターミナル」モジュールについて私が見つけた唯一のサイトです。詳しく説明してください。
ミネラル

上記のリンクには以前はterminalモジュールが含まれていましたが、ページをリダイレクトしています。これはグーグルによってキャッシュされたコードです。
ディエゴナバロ2013年

とにかく、私はこれを解決するために自分のpythonモジュールを作成しました。@ mineralsをチェックしてください;-)
Diego Navarro

8
print '\033[1m  Your Name  \033[0m'

\ 033 [1mは端末の太字のユニコードです\ 033 [0mは編集されたテキストを終了し、デフォルトのテキストを戻すためのユニコードです!!!!!

\ 033 [0mを使用しないと、ターミナルの次のテキストがすべて太字になります!!!!!!!!!


説明を追加してください
Harsha Biyani

2
答える前に他の答えを読んでください!この質問には、正しい説明がたくさんあり、さらに説明があります。役立つものは何も追加していません。
Mohammad Dehghan

6

termcolorモジュールをインストールする

sudo pip install termcolor

そして、これを色付きのテキストに試します

from termcolor import colored
print colored('Hello', 'green')

または太字のテキストの場合:

from termcolor import colored
print colored('Hello', attrs=['bold'])

Pythonの3では、代替的に使用できるcprintドロップイン置換組み込み用としてのprint色のための任意の第二パラメータまたはとともに、attrsボールド(例えば、およびその他の属性のパラメータunderline通常の名前に加えて)printなどの引数fileまたはend

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)

完全な開示、この回答はOlu Smithの回答に大きく基づいて おり、編集として意図されていたため、このページのノイズが大幅に減少しましたが、一部の校閲者が編集の想定について誤った見解を示していたため、これを別の答えにするため。


3

一部の端末では、色付きのテキストを印刷できます。一部の色は「太字」のように見えます。試してください:

print ('\033[1;37mciao!')

シーケンス '\ 033 [1; 37m'は、一部の端末を「明るい白」で印刷を開始させます。これは、太い白に少し見えるかもしれません。'\ 033 [0; 0m'はそれをオフにします。


3

実際の印刷端末で「印刷」を本当に意味すると仮定します。

>>> text = 'foo bar\r\noof\trab\r\n'
>>> ''.join(s if i & 1 else (s + '\b' * len(s)) * 2 + s
...         for i, s in enumerate(re.split(r'(\s+)', text)))
'foo\x08\x08\x08foo\x08\x08\x08foo bar\x08\x08\x08bar\x08\x08\x08bar\r\noof\x08\
x08\x08oof\x08\x08\x08oof\trab\x08\x08\x08rab\x08\x08\x08rab\r\n'

それをあなたに送ってくださいstdout


2

単純な太字-2行のコード

Python 3では、colorama-simple_colors:(Simple Colorsページ:https ://pypi.org/project/simple-colors/- 見出し「Usage」に移動します。)以下を実行する前に、を確認してくださいpip install simple_colours

from simple_colors import *
print(green('hello', 'bold'))

ここに画像の説明を入力してください


ありがとう!最初にsimple_colorsをインストールするだけです:pip install simple_colors
yzerman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.