如何在Python中打印彩色文本?

501 阅读7分钟
  • 摘要: 要在Python中打印彩色文本,你可以使用。
    • simple_color 包。
    • '\033[1m' ANSI escap-sequence。
    • termcolor模块。
    • coloroma 包。
    • Thecolored library,
    • prompt_toolkit 包。

在Python中打印加粗文本的一个简单的、无库的方法是将一个给定的字符串s ,用特殊的转义序列,像这样。 `print("\033[38;5;4m")`.

我们将在本文的方法2中讨论最Pythonic的解决方案。


你可以在Python中把你的文本改为粗体斜体和下划线。你不仅可以玩弄你的代码的风格,还可以在Python中特定包和模块的帮助下改变其颜色。

有趣的是!不是吗?

有不同的方法可以做到这一点。在本教程结束时,你将掌握所有的工具来玩弄你的代码的风格。

相关教程。

所以,不要再拖延了,让游戏开始吧!

方法 1:使用simple-color 包

Python 提供了一个壮观的包,名字叫**simple-**color,它使我们能够在终端显示彩色文本。

  • simple_colors 软件包,其中包括如下颜色 蓝色,黑色绿色, 品红, 红色, 黄色, , 和 青色.
  • 你还可以将你的文本格式化为各种样式,如粗体、暗体、斜体、亮体、下划线、反向和闪烁等,这些都包含在软件包中。

由于simple-color 包不是Python标准库的一部分,你需要在使用它之前安装它。要安装simple_color包,在你的终端上复制以下代码。

pip install simple-colors

或。

python -m pip install simple-colors

在你成功地安装了这个模块之后,你可以按照下面的例子中给出的语法来定制/样式你的代码。

例子。下面的例子演示了如何使用simple_colors 模块为文本添加颜色、格式,并使其加粗甚至下划线。

import simple_colors

# colored text
print('Normal:', simple_colors.blue('Welcome Finxter!'))
# BOLD and colored text
print('BOLD: ', simple_colors.green('Welcome Finxter!', 'bold'))
# BOLD and Underlined and colored text
print('BOLD and Underlined: ', simple_colors.red('Welcome Finxter!', ['bold', 'underlined']))

输出。

colored_text_python_img1

好哇!这看起来很神奇。

解释。

  • 要显示一个彩色的文本,你必须从simple-colors库中调用特定的颜色函数,并在这个函数中传递文本。例如,第一个打印语句在simple_colors.blue('text') 函数的帮助下显示了一个蓝色的文本。同样地,当你调用simple_colors.green('text') 方法时,它将生成一个绿色的文本。
  • 为了在给文本添加样式的同时添加颜色,我们使用了特定的颜色方法,并将格式化的类型(粗体、斜体、下划线等)作为参数传递给颜色函数。要向你的文本添加一种以上的格式化风格,你可以简单地将格式化风格作为参数传递给函数,将它们打包在一个列表中。

方法2:使用 ANSI逃逸序列

在Python中打印彩色文本的最Pythonic的方法是用特殊的转义序列将给定的字符串s ,比如。print("\033[38;5;4m").

这里有一个最小的例子。

s = "abc"
print("Uncoloured text: ", s)
colored_s = "\033[38;5;4m" + s
print("Coloured text: ", colored_s)

你可以在我们的交互式Jupyter笔记本中自己试试。

🧩 互动式在Google Colab中自己尝试一下

接下来让我们深入了解一些进一步的解释,看看为什么会这样。

一些终端支持通过独特的转义序列来修改被打印内容的色调、颜色和外观。这些转义序列被称为ANSI转义序列,是以表明其用途的ANSI标准命名的。

因此,你可以利用内置的ANSI转义序列来创建彩色的内容。下面是你可以在代码中使用的ANSI序列的分类。

  • 占位符决定了该颜色是应用于文本本身还是应用于文本背景------。
    • **38;5;**是用于文本和
    • **48;5;**是用于背景。
  • 这后面是颜色代码,范围从0255

例子。 下面的例子演示了如何使用Escope-Sequence来同时打印彩色、下划线和粗体文本。

print("\033[31;1;4mThis line gets printed in bold, underlined, and red color.\033[0m")

输出。

💡 注意: 这个代码 **'\033[0m'**是用来结束加粗文本格式的。如果你忘记添加ANSI代码序列来包围特定的代码行,下面的语句也会被打印成黑体格式。

方法3:使用termcolor 模块

在Python中,termcolor 是一个用于ANSII颜色格式化的模块。

该模块带有各种终端的属性和某些文本格式化属性。它还包括各种文本颜色,如蓝色、红色和绿色,以及文本高光,如on-magenta、on-cyan和on-white。

💡 注意: termcolor 模块并不是Python标准库的一部分。因此,在使用它之前,你需要安装它。要安装 模块,在你的终端上复制以下代码。termcolor

pip install termcolor

安装完该模块后,让我们看看如何使用它来打印彩色文本。

例子。

from termcolor import colored
text = colored('Welcome FINXTER!', 'blue', attrs=['bold'])
print(text)

方法4:使用 彩色文本

ANSI转义字符序列长期以来一直被用来在Unix和Mac上产生彩色的终端文本和光标定位。

Colorama使其在Windows上发挥作用。通过包装stdout,剥离它发现的ANSI序列(这些序列在输出中会显示为胡言乱语),并将它们转换为适当的win32调用来修改终端的状态。

  • 注意。
    • 在其他平台上,Colorama什么也不做。在Windows中,调用init() ,会将发送到stdout或stderr的任何内容的ANSI转义序列转移,并将其替换为Win32调用。
    • 要在程序退出前退出利用Colorama,可以调用deinit() 。它将把stdout和stderr恢复到它们的原始值。

来源 :https://pypi.org/project/colorama/

由于coloroma 不是 Python 标准库的一部分,你必须在终端使用下面的命令来安装它,才能使用它。

pip install colorama

让我们看一个例子来了解我们如何使用Colorama模块在Python中打印粗体字。

例1:

from colorama import Fore, Style

print(Style.BRIGHT + 'Bold text')
print(Fore.BLUE + 'Printing blue colored text')
print(Style.RESET_ALL)
print('This line has no effect of coloroma')

输出。

**例2:**将coloroma 包和termcolor 模块一起使用。

from colorama import init
from termcolor import colored

init()
print(colored('Hello and Welcome to Finxter!', 'blue', attrs=['bold']))

输出。

方法5:使用colored模块

colored是一个非常简单的Python库,用于在终端为文本着色和格式化。因为它不是一个内置的模块,所以你首先要用 pip 安装它。pip install colored

使用实例。

from colored import fore, back, style
print (fore.RED + back.YELLOW + style.BOLD + "Hello FINXTER!!!" + style.RESET)

输出。

方法6:创建一个Html对象

Prompt_toolkit 包括一个`print_formatted_text()`函数,它与内置的print()函数兼容(尽可能地)。它还支持颜色和格式化。

可以利用HTML来证明一个字符串包含基于HTML的格式化。因此,HTML对象可以识别粗体、斜体和下划线的基本标签。<b>,<i><u>

例1:

from prompt_toolkit import print_formatted_text, HTML

print_formatted_text(HTML('<b>This text is bold</b>'))
print_formatted_text(HTML('<i>This text is italic</i>'))
print_formatted_text(HTML('<u>This text is underlined</u>'))

输出。

例2:

由于所有的HTML标签都被映射到样式表的类中,你也可以为一个自定义标签指定一个样式。

from prompt_toolkit import print_formatted_text, HTML
from prompt_toolkit.styles import Style

sty = Style.from_dict({
       'y': '#44ff00 bold',
})

print_formatted_text(HTML('<red> Hello and welcome to <u>Finxter!</u> </red>'), style=sty)

输出。

结论

我们终于征服了在 Python 中打印粗体文本的艺术。我们不仅学会了如何打印粗体文本,而且还学会了如何使用颜色和其他格式化样式(如下划线和斜体)来为代码设置样式。我希望这篇文章对你有所帮助。