Rich 当中有一个Text类,我们可以使用它来给字符串添加颜色和样式。在任何可接收字符串的地方都可以使用Text实例,这将使得我们能对终端显示进行有效控制。
我们可以将Text类视为带有标记的文本区域的字符串,与内置的str不同的是,Text实例是可变的,并且大多数方法可以就地操作,而不是返回新的实例。
Rich 共有 4 种方法来使文本变为富文本:
- 使用
stylize方法 - 使用
append方法 - 使用
from_ansi方法 - 使用
assemble方法 - 使用
highlight_words方法 - 使用
highlight_regex方法1. stylize
对于Text实例而言,我们可以使用stylize方法添加样式,并可以选择渲染字符串的开始和结束位置。最终终端中将输出的“Hello, World!”,并且第一个单词会以粗体红色样式显示: ```python from rich.console import Console from rich.text import Text
console = Console() text = Text(“Hello, World!”) text.stylize(“bold magenta”, 0, 6) console.print(text)
<a name="cCZKN"></a># 2. append另外一种方法就是,使用`Text`实例`append`方法(注意不是 Python 内置的`append`方法),通过`append`方法中的`style`参数来添加样式:```pythonfrom rich.console import Consolefrom rich.text import Textconsole = Console()text = Text()text.append("Hello", style="bold magenta")text.append(" World!")console.print(text)
3. from_ansi
熟悉 Shell 脚本的同学应该不陌生,我们可以通过\033[0;32m \033[0m来给终端输出进行高亮,其实在 Python 也是一样,在字符串中添加这些会使得文本具备样式。Rich 的Text实例也提供了from_ansi方法,用来直接渲染此类字符串(如果你的字符串已经使用 ANSI 代码格式化):
from rich.console import Consolefrom rich.text import Textconsole = Console()text = Text.from_ansi("\033[0;32mHello, World!\033[0m")console.print(text)
4. assemble
接下来介绍的是使用assemble方法,它将组合字符串或带样式的字符串(这种方式允许我们对每个单词进行操作,从而具备更高的自由度),从而实现对文本添加样式:
from rich.console import Consolefrom rich.text import Textconsole = Console()text = Text.assemble(("Hello", "bold magenta"), " World!")console.print(text)
5. highlight_words
highlight_words用于对文本中的单词进行高亮,该方法会返回一个整数值,表示文本中有多少单词将被高亮:
from rich.console import Consolefrom rich.text import Texttext = Text("hello, hello world!1 2 3 zzz")text.highlight_words(words=['hello'], style="bold magenta") # 2
6. highlight_regex
highlight_regex是使用正则来找出字符串中匹配的部分进行高亮:
from rich.console import Consolefrom rich.text import Texttext = Text("hello, hello world!1 2 3 zzz")text.highlight_regex('\d+', style="bold magenta") # 3
7. 文本属性
Text类有许多参数,我们可以在构造函数中设置这些参数来修改文本的显示方式:
justify:文本位置显示位置 ,主要有left、center、right以及full四个选项overflow:文本的流动效果,主要有fold(折叠)、corp(裁剪)以及ellipsis(省略号)no_wrap:如果文本较长,则防止对文本进行包装tab_size:设置缩进的字符个数
🌂 文本属性的设置必须结合
Panel实例,才会产生效果
在 Rich API 中,可以使用Text实例来代替普通的字符串,它使得对于文本的渲染控制具备更大的自由度。例如,以下示例Panel中的文本对齐采用右对齐:
from rich import printfrom rich.panel import Panelfrom rich.text import Textpanel = Panel(Text("Hello", justify="right"))print(panel)
