在ipython qtconsole中打印粗体,彩色等文本

Dav*_*ler 20 python ipython qtconsole jupyter-notebook jupyter-lab

我试图在ipython的qtconsole中将文本显示为粗体,或颜色,或者可能以斜体显示.

我找到了这个链接:如何在Python中打印粗体文本?,并使用了第一个和第二个答案,但在qtconsole中,只有下划线选项有效.

我尝试:

print '\033[1m' + 'Hello World!' + '\033[0m'

得到:

Hello World!

(没有粗体字).颜色也不起作用.但:

print '\033[4m' + 'Hello World!' + '\033[0m'

得到:

Hello World!

带下划线.

这只是在qtconsole中.在终端中运行ipython,它可以用这种方式做粗体和颜色.

该链接中还有其他选项,使用Python在终端中打印颜色?从它链接,但它们似乎都更复杂,并且使用更复杂的包,而不是我想要做的事情,这只是让qtconsole像普通终端一样显示.

有谁知道发生了什么?这仅仅是qtconsole的限制吗?

Cha*_*les 43

在Jupyter笔记本中,解决此问题的一种简洁方法是使用markdown:

from IPython.display import Markdown, display
def printmd(string):
    display(Markdown(string))
Run Code Online (Sandbox Code Playgroud)

然后做一些像:

printmd("**bold text**")
Run Code Online (Sandbox Code Playgroud)

当然,这对于粗体,斜体等很有用,但降价本身并没有实现颜色.但是,您可以将html放在markdown中,并获得以下内容:

printmd("<span style='color:red'>Red text</span>")
Run Code Online (Sandbox Code Playgroud)

你也可以在printmd函数中包装它:

def printmd(string, color=None):
    colorstr = "<span style='color:{}'>{}</span>".format(color, string)
    display(Markdown(colorstr))
Run Code Online (Sandbox Code Playgroud)

然后做一些很酷的事情

printmd("**bold and blue**", color="blue")
Run Code Online (Sandbox Code Playgroud)

对于颜色,您也可以使用十六进制表示法(例如color = "#00FF00",绿色)

为了澄清,虽然我们使用markdown,但这是一个代码单元:你可以做以下事情:

for c in ('green', 'blue', 'red', 'yellow'):
    printmd("Writing in {}".format(c), color=c)
Run Code Online (Sandbox Code Playgroud)

当然,这种方法的缺点是依赖于Jupyter笔记本.


Tho*_*s K 17

这些是ANSI转义,特殊的字符序列,终端处理切换字体样式.Qt控制台解释其中的一些,但不是所有严重终端都能解释的.此序列适用于以红色打印,例如:

print('\x1b[1;31m'+'Hello world'+'\x1b[0m')
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在尝试编写跨平台应用程序,请注意Windows命令提示符不处理这些代码.一些更复杂的包可以处理它们以在Windows上产生类似的效果.

Qt控制台还可以显示简单的HTML,如下所示:

from IPython.display import HTML
HTML("<i>Italic text</i>")
Run Code Online (Sandbox Code Playgroud)

但是,当然,HTML不适用于常规终端.

  • 我发现这个[链接](https://bixense.com/clicolors/)具有更多颜色和突出显示 (2认同)

Jon*_*asz 9

我想完成之前的不完整答案。无需导入其他程序包即可完成更复杂有趣的事情。例如

print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m')
Run Code Online (Sandbox Code Playgroud)

即:

打开用:

'\x1b[XX;YY;ZZm'
Run Code Online (Sandbox Code Playgroud)

结束于:

'\x1b[0m'
Run Code Online (Sandbox Code Playgroud)

其中XX,YY和ZZ是以下来源的数字:https//en.wikipedia.org/wiki/ANSI_escape_code

应该注意的是,它很大程度上取决于您用作控制台的功能。

为我工作是以下各项的组合:

文字样式

  • 1增加强度(在我的情况下,它同时作用于突出显示和文本)
  • 3斜体
  • 4下划线

文字颜色

  • 30黑色文字
  • 31深红色文字
  • 32深绿色文字
  • 33红色文字
  • 34深蓝色文字
  • 35紫色文字
  • 36蓝色文字
  • 37灰色文字

明亮的文字颜色

  • 1; 30灰色文字(亮黑色)
  • 1; 31橙色文字(亮红色)
  • 1; 32亮绿色文字
  • 1; 33亮黄色文字
  • 1; 34亮蓝色文字
  • 1; 35明亮的紫色文字
  • 1; 36明亮的青色文字
  • 1; 37白色文字(深灰色)

背景颜色(即高光)

  • 40黑色亮点
  • 41深红色亮点
  • 42深绿色亮点
  • 43红色亮点
  • 44深蓝色高光
  • 45紫色亮点
  • 46蓝色亮点
  • 47灰色亮点

注意1; 42等也类似地工作

在Windows 7,Python 3.6,IPython控制台,Spyder 3.2.3中进行了测试,这对我有效