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

例句:

print "hello"

我该怎么做才能使文本“hello”;大胆的?

542782 次浏览

这取决于你使用的是Linux还是Unix:

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

text这个词应该是粗体。

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

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

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

Python中有一个非常有用的模块用于格式化文本(粗体、下划线、颜色等)。它使用诅咒库,但使用起来非常简单。

一个例子:

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 .py的简单模块,使其更python化:

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

假设你的真的是指在真正的打印终端上的“打印”:

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

查看彩色光。它不一定对加粗有帮助……但是你可以在Windows和Linux上进行彩色输出,并控制亮度:

from colorama import *


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

在直接的计算机编程中,没有“打印粗体文本”这样的事情。让我们后退一点,理解你的文本是一串字节,字节只是一捆比特。对于计算机,这是你的“hello”文本,二进制

0110100001100101011011000110110001101111

每一个1或0都是位。每八位就是一个字节。在Python 2中,每个字节都是这样的字符串。X,一个字母/数字/标点符号项目(称为字符)。例如:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

计算机将这些比特转换成字母,但在传统的字符串(称为ASCII字符串)中,没有任何东西表示粗体文本。在Unicode字符串中,它的工作方式有点不同,计算机可以支持国际语言字符,比如中文字符,但同样,没有什么说有些文本是粗体,有些文本不是。它也没有明确的字体、文本大小等。

在打印HTML的情况下,输出的仍然是字符串。但是读取该字符串的计算机程序(web浏览器)在将字符串转换为屏幕上的像素时,会将诸如this is <b>bold</b>之类的文本解释为“this is 大胆的”。如果所有文本都是所见即所得,那么对HTML本身的需求就会减少——您只需在编辑器中选择文本并加粗,而不是输入HTML。

其他程序使用不同的系统——许多答案解释了在终端上打印粗体文本的完全不同的系统。我很高兴你找到了如何做你想做的事情,但在某些时候,你会想要了解字符串和内存是如何工作的。

用这个:

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

和变回正常:

print '\033[0m'

这个页面是打印颜色和字体权重的一个很好的参考。转到“设置图形模式”部分:

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

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)

你可以使用termcolor来表示:

 sudo pip install termcolor

打印彩色粗体:

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

更多信息,参见termcolor在PyPi

简单的色彩是另一个具有类似语法的包:

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

彩色光中的等价物可能是Style.BRIGHT

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

\033[1m是终端中粗体的转义码。 \033[0m是结束编辑文本并返回默认文本格式的转义码

如果你不使用\033[0m,那么所有即将到来的终端文本都将变成粗体。

安装termcolor模块

sudo pip install termcolor

然后对彩色文本试试这个

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

对于粗体文本:

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

在Python 3中,你可以选择使用cprint来代替内置的print,使用第二个可选参数来表示颜色,或者使用attrs参数来表示粗体(以及其他属性,如underline),而不是使用常规的命名为print的参数,如fileend

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

完全披露,这个答案很大程度上是基于Olu Smith的回答 并打算作为编辑,这将减少本页上的噪音 但这是因为一些评论者的被误导的概念 编辑应该是什么样子,我现在不得不把这作为一个单独的答案

简单的粗体-两行代码

在Python 3中,你可以使用彩色光 - simple_colors: (在简单的颜色页*,转到标题“用法”。)在你做下面的事情之前。确保你pip install simple_colours.

from simple_colors import *


print(green('hello', 'bold'))

Enter image description here

粗体印刷变得很容易。

使用皮普安装quo:

from quo import echo
echo(f"Hello, World!", bold=True)

一个简单的方法依赖于Unicode 数学字母数字符号

代码

def bold(
text,
trans=str.maketrans(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
"𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵",
),
):
return text.translate(trans)

例子

assert bold("Hello world") == "𝗛𝗲𝗹𝗹𝗼 𝘄𝗼𝗿𝗹𝗱"

讨论

我能想到几个优点和缺点。欢迎在评论中加入你的观点。

优点:

  • 短而易读。
  • 没有外部库。
  • 可移植:可用于突出显示ipywidgets Dropdown中的部分。
  • 可扩展为斜体字等,使用适当的翻译表。
  • 语言不可知:同样的技术可以在任何编程语言中实现。

缺点:

  • 需要Unicode支持和定义了所有必需字形的字体。不过,这在任何合理的现代系统上都是可行的。
  • 无复制粘贴:产生仿-text。不过请注意,'𝘄𝗼𝗿𝗹𝗱'.isalpha()仍然是True
  • 没有变音符号。

实现注意事项

  • 在上面的代码中,翻译表是作为可选参数给出的,这意味着它只计算一次,并方便地封装在使用它的函数中。如果你喜欢更标准的风格,可以定义一个全局BOLD_TRANS常量,或者使用闭包或轻量级类。

粗体文本在Python中是这样的:

print("This is how the {}bold{} text looks like in Python".format('\033[1m', '\033[0m'))

这是Python中大胆的文本的样子。