控制台标记¶
Rich 支持一个简单的标记,您可以使用它插入颜色和样式,几乎可以在 Rich 接受字符串(例如和)的任何地方插入颜色和样式。
运行以下命令以查看一些示例:
python -m rich.markup
语法¶
控制台标记使用受 bbcode 启发的语法。如果您将样式(请参阅样式)写在方括号中,例如,该样式将一直适用,直到它以相应的 .[bold red]
[/bold red]
下面是一个简单的示例:
from rich import print
print("[bold red]alert![/bold red] Something happened")
如果不关闭样式,它将一直应用到字符串的末尾。如果您想设置单行样式,这有时很方便。例如:
print("[bold italic yellow on red blink]This text is impossible to read")
有一个关闭样式的简写。如果从结束标记中省略样式名称,Rich 将关闭最后一个样式。例如:
print("[bold red]Bold and red[/] not bold or red")
这些标记标记可以相互组合使用,不需要严格嵌套。以下示例演示了标记标记的重叠:
print("[bold]Bold[italic] bold and italic [/bold]italic[/italic]")
错误¶
如果标记包含以下错误之一,则 Rich 将引发:MarkupError
-
标签不匹配,例如
"[bold]Hello[/red]"
-
没有用于隐式关闭的匹配标签,例如
"no tags[/]"
链接¶
控制台标记可以输出具有以下语法的超链接:。下面是一个示例:[link=URL]text[/link]
print("Visit my [link=https://www.willmcgugan.com]blog[/link]!")
如果您的终端软件支持超链接,您将能够单击“博客”一词,这通常会打开浏览器。如果您的终端不支持超链接,您将看到文本,但无法单击。
逃避¶
有时,您可能希望打印 Rich 会解释为标记的内容。您可以通过在标签前面加上反斜杠来转义标签。下面是一个示例:
>>> from rich import print
>>> print(r"foo\[bar]")
foo[bar]
如果没有反斜杠,Rich 将假定这是一个标签,如果没有“bar”样式,则会将其从输出中删除。[bar]
注意
如果要防止反斜杠转义标签并在标签之前输出文本反斜杠,则可以输入两个反斜杠。
该函数将为您处理文本转义。
如果使用或 f 字符串(例如)动态构造控制台标记,则转义很重要。在不转义的情况下,可以在您不需要标签的地方注入标签。请考虑以下函数:str.format
def greet(name):
console.print(f"Hello {name}!")
呼叫将打印问候语,但如果您要呼叫,则还会收到闪烁的文本,这可能是不希望的。解决方案是转义参数:greet("Will")
greet("[blink]Gotcha![/blink]")
from rich.markup import escape
def greet(name):
console.print(f"Hello {escape(name)}!")
表情符号¶
如果您将表情符号代码添加到标记中,它将替换为等效的 unicode 字符。表情符号代码由用冒号括起来的表情符号的名称组成 (:)。下面是一个示例:
>>> from rich import print
>>> print(":warning:")
⚠️
某些表情符号有两种变体,“表情符号”变体以全彩色显示,“文本”变体以单色显示(无论您的默认颜色设置为什么)。您可以通过在表情符号代码中添加“-表情符号”或“-text”来指定所需的变体。下面是一个示例:
>>> from rich import print
>>> print(":red_heart-emoji:")
>>> print(":red_heart-text:")
若要查看所有可用表情符号的列表,请运行以下命令:
python -m rich.emoji
呈现标记¶
默认情况下,当您将字符串显式传递给控制台标记时,Rich 将呈现控制台标记,或者当您将字符串嵌入另一个可呈现对象(如 or )中时,Rich 将隐式呈现控制台标记。print()
控制台标记很方便,但如果语法与要打印的字符串冲突,您可能希望禁用它。可以通过设置方法或构造函数来执行此操作。markup=False
print()
标记接口¶
可以通过调用 将字符串转换为带样式的文本,这将返回可以打印或添加更多样式的实例。