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

时间:2014-04-24 14:18:12

标签: python jupyter-notebook ipython jupyter-lab qtconsole

我试图让文本在ipython的qtconsole中以粗体,颜色或斜体显示。

我找到了这个链接:How do I print bold text in Python?,并使用了第一个和第二个答案,但在qtconsole中,只有下划线选项有效。

我试试:

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

得到:

Hello World!

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

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

得到:

Hello World!

带下划线。

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

该链接中还有其他选项,Print in terminal with colors using Python?与其相关联,但是它们看起来都比较复杂,并且使用了更复杂的包,而不是我想做的事情,这是只需让qtconsole像普通终端一样显示。

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

4 个答案:

答案 0 :(得分:31)

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

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")

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

为了澄清,尽管我们使用markdown,但这是一个代码单元格:您可以执行以下操作:

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

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

答案 1 :(得分:14)

这些是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不适用于常规终端。

答案 2 :(得分:6)

我想完成之前的不完整答案。 如果不导入其他软件包,可以完成更复杂,更有趣的事情。 e.g。

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增加强度(在我的情况下,它同时对高亮和文本进行操作)
  • 3 Itallic
  • 4 Underline

文字颜色

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

明亮的文字颜色

  • 1; 30灰色文字(亮黑色)
  • 1; 31橙色文字(鲜红色)
  • 1; 32亮绿色文字
  • 1; 33亮黄色文字
  • 1; 34 Bright Blue text
  • 1; 35亮紫色文字
  • 1; 36 Bright Cyan text
  • 1; 37白色文字(明亮 灰色)

背景颜色(即高光)

  • 40黑色亮点
  • 41 Dark Red highlight
  • 42深绿色亮点
  • 43红色突出显示
  • 44深蓝色突出显示
  • 45紫色亮点
  • 46蓝色亮点
  • 47灰色突出显示

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

在Windows 7,python 3.6,IPython控制台上测试,在spyder 3.2.3中这对我有用

答案 3 :(得分:0)

你可以调整几种方法(我在iPython笔记本中试过,不确定其他方法)..

**BOLD TEXT**

上面会生成粗体文字: BOLD TEXT

*__BOLD TEXT__*

将生成粗体和斜体文字: BOLD TEXT