首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ipython qtconsole中打印粗体、彩色等文本

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

Stack Overflow用户
提问于 2014-04-24 22:18:12
回答 5查看 66.7K关注 0票数 37

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

EN

回答 5

Stack Overflow用户

发布于 2017-10-25 21:48:23

在Jupyter笔记本中,解决这个问题的一种干净的方法是使用markdown:

代码语言:javascript
运行
复制
from IPython.display import Markdown, display
def printmd(string):
    display(Markdown(string))

然后做一些类似这样的事情:

代码语言:javascript
运行
复制
printmd("**bold text**")

当然,这对于粗体、斜体等很好,但markdown本身并不实现颜色。但是,您可以将html放在您的markdown中,并获得如下内容:

代码语言:javascript
运行
复制
printmd("<span style='color:red'>Red text</span>")

您还可以将其包装在printmd函数中:

代码语言:javascript
运行
复制
def printmd(string, color=None):
    colorstr = "<span style='color:{}'>{}</span>".format(color, string)
    display(Markdown(colorstr))

然后做一些很酷的事情,比如

代码语言:javascript
运行
复制
printmd("**bold and blue**", color="blue")

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

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

代码语言:javascript
运行
复制
for c in ('green', 'blue', 'red', 'yellow'):
    printmd("Writing in {}".format(c), color=c)

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

票数 75
EN

Stack Overflow用户

发布于 2014-04-25 00:50:26

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

代码语言:javascript
运行
复制
print('\x1b[1;31m'+'Hello world'+'\x1b[0m')

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

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

代码语言:javascript
运行
复制
from IPython.display import HTML
HTML("<i>Italic text</i>")

当然,HTML不能在普通终端中工作。

票数 23
EN

Stack Overflow用户

发布于 2017-11-14 01:57:26

我想完成之前不完整的答案。更复杂和有趣的事情可以在不导入额外的包的情况下完成。例如:

代码语言:javascript
运行
复制
print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m')

即:

打开方式:

代码语言:javascript
运行
复制
'\x1b[XX;YY;ZZm'

结尾为:

代码语言:javascript
运行
复制
'\x1b[0m'

其中XX、YY和ZZ是来自:https://en.wikipedia.org/wiki/ANSI_escape_code的数字

应该注意的是,这在很大程度上取决于您使用什么作为控制台来查看什么是有效的。

对我来说,工作是以下几个方面的组合:

文本样式

  • 1增强了强度(在我的例子中,它同时在突出显示和文本上操作)
  • 3斜体
  • 4下划线

文本颜色

  • 30黑色文本
  • 31深红色文本
  • 32深绿色文本
  • 33红色文本

<代码>H12534深蓝色文本

  • 35紫色文本

H12936蓝色文本

  • 37灰色文本

F233

亮文本颜色

  • 1;30灰色文本(亮黑色)
  • 1;31橙色文本(亮红色)
  • 1;32亮绿色文本
  • 1;33亮黄色文本
  • 1;34亮蓝色文本

1;35 Bright紫色text

  • 1;36 Bright青色文本
  • 1;37白色文本(亮灰色)

背景颜色(即突出显示)

  • 40黑色突出显示
  • 41深红色突出显示
  • 42深绿色突出显示
  • 43红色突出显示
  • 44深蓝色突出显示
  • 45紫色突出显示

46蓝色突出显示

  • 47灰色突出显示

请注意,1;42等也是类似的工作方式

在Windows7,Python3.6,IPython控制台上测试,在Spyder3.2.3中,这对我来说是有效的

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23271575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档