如何在Python中打印粗体文本?


162

如何在Python中打印粗体文本?

例如:

print "hello"

我应该怎么做才能使文本“ hello”以粗体显示?


2
unix中终端应用中彩色文本的副本。答案中有很多链接。答案是用C语言编写的,但很容易转换为Python。
2012年

6
您正在使用哪个终端?您使用的是Unix还是Windows?
Sjoerd 2012年

我正在使用野生动物园。刚刚发现我可以在python中使用HTML标记。
佳罗

Answers:


378
class color:
   PURPLE = '\033[95m'
   CYAN = '\033[96m'
   DARKCYAN = '\033[36m'
   BLUE = '\033[94m'
   GREEN = '\033[92m'
   YELLOW = '\033[93m'
   RED = '\033[91m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
   END = '\033[0m'

print(color.BOLD + 'Hello World !' + color.END)

15
我喜欢您不仅做粗体,而且创建了一个完整的类供他们参考并帮助所有用户查看的方式。谢谢。
GreenHawk1220

3
我要用它作为字典,而不是一堂课。谢谢!
dvlden

6
它正在打印以下内容:[1mHello World ![0m

使用我的设置:ubuntu 19.10,python 3.7
Elouan Keryell-Even

是否可以将粗体与颜色结合使用?@Boubakr
alper

62

用这个:

print '\033[1m' + 'Hello'

并恢复正常:

print '\033[0m'

此页面是使用颜色和字体粗细打印的良好参考。转到“设置图形模式:”部分

并请注意,这不适用于所有操作系统,但不需要任何模块。


31

您可以为此使用termcolor:

 sudo pip install termcolor

要打印彩色的粗体:

 from termcolor import colored
 print(colored('Hello', 'green', attrs=['bold']))

有关更多信息,请参见PyPi上的termcolor

simple-colors是另一个具有类似语法的软件包:

 from simple_colors import *
 print(green('Hello', ['bold'])

colorama中的等效值可能是Style.BRIGHT


8
如果我不得不猜测有人对此表示反对,因为它没有回答实际的问题,即如何以粗体显示某些内容。
基督教徒

您的权利,有更新。对不起,那个家伙。
Olu Smith

22

在简单的计算机编程中,没有诸如“打印粗体文本”之类的东西。让我们备份一下,了解您的文本是一串字节,而字节只是几捆。对于计算机,这是您的“ hello”文本,以二进制形式出现

0110100001100101011011000110110001101111

每个一个或零是一个位。每八个位是一个字节。像Python 2.x这样的字符串中的每个字节都是一个字母/数字/标点符号(称为字符)。因此,例如:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

计算机将这些位转换为字母,但是在传统字符串(称为ASCII字符串)中,没有任何内容可以指示粗体文本。在工作原理稍有不同的Unicode字符串中,计算机可以支持国际语言字符(例如中文字符),但是同样,也不能说某些文本为粗体,而某些文本则不是。也没有明确的字体,文本大小等。

在打印HTML的情况下,您仍在输出字符串。但是,读取该字符串的计算机程序(Web浏览器)被编程为在将您的字母字符串转换为屏幕上的像素时将文本解释this is <b>bold</b>为“ this is bold ”。如果所有文本都是“所见即所得”,那么HTML本身的需求将得到缓解-您只需在编辑器中选择文本并将其加粗即可,而不用键入HTML。

其他程序使用不同的系统-很多答案解释了在终端上打印粗体文本的完全不同的系统。很高兴您发现了如何做自己想做的事情,但是在某个时候,您将想要了解字符串和内存的工作方式。


9
由于不满意的,因为这答案似乎是,它可能是大部分正确回答的问题之一是问。这根本不是一个Python问题,而是一个正在做的渲染问题。
约翰Y

8
问题是,对这个问题的答案感兴趣的每个人都可以理解二进制以及如何使用二进制来表示字符串。我们对如何使用python使文本看起来加粗感兴趣,上面已作了解答。这个答案远远超过了学究。
Trevor

16

这取决于您使用的是linux / unix:

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.

该词text应为粗体。


13

退房colorama。它不一定有助于加粗...但是您可以在Windows和Linux上进行彩色输出,并控制亮度:

from colorama import *
init(autoreset=True)
print Fore.RED + 'some red text'
print Style.BRIGHT + Fore.RED + 'some bright red text'

13

有一个非常有用的模块,用于在Python中设置文本格式(粗体,下划线,颜色..)。它使用curseslib,但是使用起来非常简单。

一个例子:

from terminal import render
print render('%(BG_YELLOW)s%(RED)s%(BOLD)sHey this is a test%(NORMAL)s')
print render('%(BG_GREEN)s%(RED)s%(UNDERLINE)sAnother test%(NORMAL)s')

更新:

我编写了一个名为colors.py的简单模块,以使其变得更加Pythonic:

import colors

with colors.pretty_output(colors.BOLD, colors.FG_RED) as out:
    out.write("This is a bold red text")

with colors.pretty_output(colors.BG_GREEN) as out:
    out.write("This output have a green background but you " + 
               colors.BOLD + colors.FG_RED + "can" + colors.END + " mix styles")

2
ImportError: No module named terminal ImportError: No module named render 实际上,这是我可以找到的有关“终端”模块的唯一站点。请详细说明。
矿物

上面的链接曾经包含该terminal模块,但是它们已经重定向了页面。这是谷歌缓存的代码
迭戈·纳瓦罗

无论如何,我已经制作了自己的python模块来解决此问题,请查看@minerals ;-)
Diego Navarro

8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m是终端中加粗的Unicode \ 033 [0m是结束已编辑文本并返回默认文本格式的unicode !!!!

如果您不使用\ 033 [0m,则终端的所有后续文本将变为粗体!!!!!!


请添加一些说明
戒Biyani

2
请在回答之前阅读其他答案!这个问题有很多正确答案,还有更多解释。您没有添加任何有用的东西。
Mohammad Dehghan

6

安装termcolor模块

sudo pip install termcolor

然后尝试彩色文本

from termcolor import colored
print colored('Hello', 'green')

或以下粗体字:

from termcolor import colored
print colored('Hello', attrs=['bold'])

在Python 3 cprintprint,除了常规的命名参数(或)之外,您还可以使用可选的第二个颜色attrs参数或用于加粗的参数(以及其他属性,如underline)来代替内置print函数。fileend

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)

完全公开,此答案很大程度上基于Olu Smith的答案 ,并打算作为编辑,它会大大减少此页面上的干扰,但是由于某些评论者对编辑内容的误解,我现在被迫将其作为一个单独的答案。


3

一些终端允许打印彩色文本。有些颜色看起来像是“粗体”。尝试:

print ('\033[1;37mciao!')

序列'\ 033 [1; 37m“使一些终端以“亮白色”开始打印,看起来可能有点像黑体。'\ 033 [0; 0m“将其关闭。


3

假设你真的一上就可以“打印” 真正的打印终端:

>>> text = 'foo bar\r\noof\trab\r\n'
>>> ''.join(s if i & 1 else (s + '\b' * len(s)) * 2 + s
...         for i, s in enumerate(re.split(r'(\s+)', text)))
'foo\x08\x08\x08foo\x08\x08\x08foo bar\x08\x08\x08bar\x08\x08\x08bar\r\noof\x08\
x08\x08oof\x08\x08\x08oof\trab\x08\x08\x08rab\x08\x08\x08rab\r\n'

只需将其发送给您stdout


2

简单大胆-两行代码

在python 3中,您可以使用colorama-simple_colors:(“简单颜色”页面:https : //pypi.org/project/simple-colors/-转到标题“用法”。)在执行以下操作之前,请确保您pip install simple_colours

from simple_colors import *
print(green('hello', 'bold'))

在此处输入图片说明


谢谢!我们只需要首先安装simple_colors:pip install simple_colors
yzerman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.