以ipython qtcons打印粗体、彩色等文本

2024-05-31 23:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让文本在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的一个限制吗?


Tags: in文本终端helloworld链接颜色选项
3条回答

在Jupyter笔记本中,解决此问题的一个简单方法是使用降价:

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"表示绿色)

为了澄清,虽然我们使用了标记,但这是一个代码单元格:您可以执行如下操作:

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

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

我想完成前面不完整的回答。 不需要导入额外的包就可以完成更复杂和有趣的事情。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意大利式
  • 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控制台和spyder3.2.3中进行了测试,这对我很有用

这些是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在常规终端中不起作用。

相关问题 更多 >