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

Jia*_*Luo 125 python

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

例如:

print "hello"
Run Code Online (Sandbox Code Playgroud)

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

小智 287

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)
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢你不仅做大胆的方式,而是为他们创建了一个完整的类来引用和帮助所有用户查看.谢谢. (4认同)
  • 印刷如下:`[1mHello World![0m` (4认同)
  • @mccurcio 这适用于 python 3.10.9 (4认同)
  • 我会用这个作为词典,而不是一个班级.谢谢! (3认同)
  • 这个答案中唯一可能依赖于 Python 版本的是使用“print”函数而不是 print 语句。实际的颜色取决于你的*终端*识别转义序列,与Python本身无关。 (3认同)
  • @Boubakr它对我不起作用.为什么? (2认同)
  • 我也可以将大胆与颜色结合起来吗?@布巴克 (2认同)
  • 是的,只需连接两个变量即可: `print(color.RED + color.BOLD + "Bold red string" + color.END)` 。(顺便说一句,适用于 Python 3.8.2(至少在 Ubuntu 20.04 上)。) (2认同)
  • 这不再适用于 Python 3.9。 (2认同)
  • 那么什么在 3.9+ 中有效呢? (2认同)

Add*_*son 48

用这个:

print '\033[1m' + 'Hello'
Run Code Online (Sandbox Code Playgroud)

并恢复正常:

print '\033[0m'
Run Code Online (Sandbox Code Playgroud)

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

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


Olu*_*ith 22

 sudo pip install termcolor
Run Code Online (Sandbox Code Playgroud)


然后尝试这个

 from termcolor import colored
 print colored('Hello', 'green')
Run Code Online (Sandbox Code Playgroud)

这就是我的意思

  • 为什么选择downvote?Atleast有勇气解释原因! (8认同)
  • 如果我不得不猜测有人否决了这个,因为它没有回答如何以粗体打印某些内容的实际问题。 (8认同)

Ken*_*der 21

在直接计算机编程中,没有"打印粗体文本"这样的东西.让我们稍微回顾一下,理解你的文本是一串字节,字节只是一堆比特.对于计算机,这是你的"你好"文本,二进制文件.

0110100001100101011011000110110001101111
Run Code Online (Sandbox Code Playgroud)

每一个或零都有点.每八位是一个字节.每个字节在Python 2.x中的字符串中都是一个字母/数字/标点符号项(称为字符).例如:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o
Run Code Online (Sandbox Code Playgroud)

计算机将这些位转换为字母,但在传统的字符串(称为ASCII字符串)中,没有任何内容可以指示粗体文本.在一个有点不同的Unicode字符串中,计算机可以支持国际语言字符,就像中文字符一样,但是,没有什么可以说某些文本是粗体而某些文本不是.还没有明确的字体,文字大小等.

在打印HTML的情况下,您仍在输出字符串.但是,读取该字符串(网络浏览器)的计算机程序被编程为在将您的字母串转换为屏幕上的像素时将文本解释this is <b>bold</b>为"这是粗体 ".如果所有文本都是WYSIWYG,则可以减轻对HTML本身的需求 - 您只需在编辑器中选择文本并加粗,而不是输入HTML.

其他程序使用不同的系统 - 许多答案解释了一个完全不同的系统,用于在终端上打印粗体文本.我很高兴你发现了如何做你想做的事情,但在某些时候,你会想要理解字符串和记忆是如何工作的.

  • 尽管这个答案可能看起来不尽如人意,但它可能是最恰当地回答问题**的问题**.它根本不是一个Python问题,而是一个*无论是在做什么渲染*问题. (8认同)
  • 问题是,对这个问题的答案感兴趣的每个人都了解二进制,以及二进制如何用于表示字符串。我们对如何使用python使文本看起来加粗感兴趣,上面已作了解答。这个答案远远超过了学究。 (3认同)

aay*_*ubi 12

这取决于你是否使用linux/unix:

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.
Run Code Online (Sandbox Code Playgroud)

这个词text应该是大胆的.

  • 回复“使用 Linux”*:这是为什么?[ANSI 转义序列](https://en.wikipedia.org/wiki/ANSI_escape_code)?您能在回答中***详细说明***吗?它工作的先决条件是什么(例如,终端仿真支持)?- 哪里*不起作用*?但是 ********* ***没有*** ********* “编辑:”、“更新:”或类似内容 - 答案应该看起来就像是今天写的) (2认同)

Joh*_*ter 11

检查colorama.它不一定有助于粗体...但你可以在Windows和Linux上进行彩色输出,并控制亮度:

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


小智 11

print '\033[1m  Your Name  \033[0m'
Run Code Online (Sandbox Code Playgroud)

\ 033 [1m是终端中粗体的unicode\033 [0m是用于结束编辑文本和返回默认文本格式的unicode !!!!!

如果你不使用\ 033 [0m比终端的所有即将发送的文字都会变得大胆!!!!!!!!!


Die*_*rro 10

在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')
Run Code Online (Sandbox Code Playgroud)

更新:

我写了一个名为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")
Run Code Online (Sandbox Code Playgroud)

  • `ImportError:没有名为terminal的模块``ImportError:没有名为render的模块`实际上这是我能找到的关于"终端"模块的唯一网站.请详细说明. (2认同)

Chr*_*ian 9

安装termcolor模块

sudo pip install termcolor
Run Code Online (Sandbox Code Playgroud)

然后试试这个彩色文本

from termcolor import colored
print colored('Hello', 'green')
Run Code Online (Sandbox Code Playgroud)

或者这对于粗体文本:

from termcolor import colored
print colored('Hello', attrs=['bold'])
Run Code Online (Sandbox Code Playgroud)

在Python 3您也可以使用cprint作为一个下拉更换为内置的print,与颜色的可选的第二个参数或attrs粗体(和其他属性,诸如参数underline,除了正常的命名)print参数,例如fileend

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)
Run Code Online (Sandbox Code Playgroud)

完全公开,这个答案在很大程度上基于Olu Smith 的答案, 并且旨在作为编辑,这会大大减少此页面上的噪音,但由于一些审阅者对编辑应该是什么的误导性概念,我现在被迫使其成为一个单独的答案。


Ari*_*ide 5

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

\n

代码

\n
def bold(\n    text,\n    trans=str.maketrans(\n        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",\n        "",\n    ),\n):\n    return text.translate(trans)\n
Run Code Online (Sandbox Code Playgroud)\n

例子

\n
assert bold("Hello world") == " "\n
Run Code Online (Sandbox Code Playgroud)\n

讨论

\n

我能想到的几个优点和缺点。请随意在评论中添加您的内容。

\n

优点:

\n
    \n
  • 尽可能短,可读性强。
  • \n
  • 没有外部库。
  • \n
  • 便携式:例如可用于突出显示 ipywidgets 中的部分Dropdown
  • \n
  • 通过适当的翻译表可扩展到斜体等。
  • \n
  • 与语言无关:相同的技术可以用任何编程语言实现。
  • \n
\n

缺点:

\n
    \n
  • 需要 Unicode 支持和定义了所有所需字形的字体。不过,这在任何相当现代的系统上都应该没问题。
  • \n
  • 没有复制粘贴\xc2\xa0:会产生文本。但请注意,\'\'.isalpha()仍然是True
  • \n
  • 没有变音符号。
  • \n
\n

实施说明

\n
    \n
  • 在上面的代码中,转换表作为可选参数给出,这意味着它仅被评估一次,并且可以方便地封装在使用它的函数中。如果您喜欢更标准的样式,请定义全局BOLD_TRANS常量,或使用闭包或轻量级类。
  • \n
\n