Ipythonのqtconsoleでテキストを太字、色、またはイタリック体で表示しようとしています。
このリンクを見つけました: Pythonで太字のテキストを印刷するにはどうすればよいですか? 、最初と2番目の回答を使用しましたが、qtconsoleでは、下線オプションのみが機能します。
私が試します:
print '\033[1m' + 'Hello World!' + '\033[0m'
そして取得:
Hello World!
(太字なし)。色も機能しません。だが:
print '\033[4m' + 'Hello World!' + '\033[0m'
そして取得:
Hello World!
下線付き。
これはqtconsoleのみにあります。ターミナルでipythonを実行するだけで、この方法で太字と色を実行できます。
そのリンクと別のオプションで提案された他のオプションがありました Pythonを使用して色付きの端末で印刷します 、それからリンクされていますが、それらはすべてより複雑に見え、より複雑なパッケージを使用し、私がやりたいのは、通常の端末のようにqtconsoleを表示するだけです。
誰が何が起こっているか知っていますか?これは単にqtconsoleの制限ですか?
Jupyterノートブックでは、この問題を解決する1つのクリーンな方法は、マークダウンを使用することです。
from IPython.display import Markdown, display
def printmd(string):
display(Markdown(string))
そして、次のようなことをします:
printmd("**bold text**")
もちろん、これは太字、斜体などには適していますが、マークダウン自体は色を実装しません。ただし、htmlをマークダウンに配置して、次のようなものを取得できます。
printmd("<span style='color:red'>Red text</span>")
printmd
関数でこれをラップすることもできます:
def printmd(string, color=None):
colorstr = "<span style='color:{}'>{}</span>".format(color, string)
display(Markdown(colorstr))
そして、次のようなクールなことをします
printmd("**bold and blue**", color="blue")
色には、16進表記も使用できます(例:color = "#00FF00"
は緑)
明確にするために、マークダウンを使用しますが、これはcodeセルです。次のようなことができます。
for c in ('green', 'blue', 'red', 'yellow'):
printmd("Writing in {}".format(c), color=c)
もちろん、この方法の欠点は、Jupyterノートブック内にあることに依存していることです。
これらはANSIエスケープであり、フォントスタイルを切り替えるために端末が処理する特殊な文字シーケンスです。 Qtコンソールはそれらのいくつかを解釈しますが、深刻な端末が行うものすべてを解釈するわけではありません。このシーケンスは、たとえば、赤で印刷するように機能します。
print('\x1b[1;31m'+'Hello world'+'\x1b[0m')
ただし、クロスプラットフォームアプリケーションを作成しようとしている場合は、Windowsコマンドプロンプトがこれらのコードを処理しないことに注意してください。より複雑なパッケージの中には、Windows上で同様の効果を生み出すためにそれらを処理できるものがあります。
Qtコンソールは、次のような単純なHTMLも表示できます。
from IPython.display import HTML
HTML("<i>Italic text</i>")
しかし、もちろん、HTMLは通常の端末では機能しません。
以前の不完全な回答を完了したいと思います。追加のパッケージをインポートすることなく、より複雑で楽しいことができます。例えば.
print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m')
すなわち:
で開く:
'\x1b[XX;YY;ZZm'
終了:
'\x1b[0m'
XX、YY、およびZZは、次の番号です。 https://en.wikipedia.org/wiki/ANSI_escape_code
動作を確認するためにコンソールとして使用するものに大きく依存していることに注意してください。
私のために働くのは、次の組み合わせです。
テキストスタイリング
テキストの色
明るいテキストの色
背景色(つまりハイライト)
1; 42なども同様に機能することに注意してください
Windows 7でテスト済み、python 3.6、IPythonコンソール、スパイダー3.2.3でこれは私のために働く
IPythonノートブックの本文テキスト(Markdowns)を意味する場合は、テキストの前後に2つの下線文字を挿入して、テキストを作成できます[〜#〜] bold [〜#〜]:
__BOLD TEXT__
=> 太字
その前にバックスラッシュを置くと、それは打ち消されます:
\__BOLD TEXT__
=> __BOLD TEXT__
微調整する方法は他にもいくつかあります(iPython Notebookで試しましたが、他の方法についてはわかりません)。
**BOLD TEXT**
上記は太字のテキストを生成します:BOLD TEXT
*__BOLD TEXT__*
太字および斜体のテキストを生成します:BOLD TEXT