控制台标记¶
Rich支持一个简单的标记,您可以使用该标记在Rich接受字符串的几乎所有位置插入颜色和样式(例如 print()
和 log()
)。
运行以下命令以查看一些示例:
python -m rich.markup
语法¶
控制台标记使用的语法灵感来自 bbcode 。如果您编写样式(请参见 样式 )在方括号中,例如 [bold red]
,这种风格将一直适用到 closed 具有对应的 [/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]")
错误¶
富豪将筹集资金 MarkupError
如果标记包含以下错误之一:
不匹配的标签,例如
"[bold]Hello[/red]"
没有匹配的隐式关闭标记,例如
"no tags[/]"
链接¶
控制台标记可以使用以下语法输出超链接: [link=URL]text[/link]
。以下是一个示例:
print("Visit my [link=https://www.willmcgugan.com]blog[/link]!")
如果你的终端软件支持超链接,你可以点击“博客”这个词,这通常会打开一个浏览器。如果您的终端不支持超链接,您将看到文本,但无法点击。
逃脱¶
有时,您可能希望打印一些Rich会解释为标记的内容。你可以的 escape 在标签前面加一个反斜杠。以下是一个示例:
>>> from rich import print
>>> print(r"foo\[bar]")
foo[bar]
如果没有反斜杠,里奇会认为 [bar]
是一个标记,如果没有“bar”样式,则将其从输出中删除。
备注
如果要防止反斜杠转义标记,并在标记前输出文字反斜杠,则可以输入两个反斜杠。
该功能 escape()
将为您处理文本转义。
如果动态构造控制台标记,则转义非常重要 str.format
或f字符串(例如)。在不转义的情况下,可能会在您不需要的地方注入标记。请考虑以下功能:
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)}!")
表情符号¶
如果您将一个 emoji code 为了进行标记,它将被替换为等效的Unicode字符。表情符号代码由用冒号(:)括起来的表情符号的名称组成。以下是一个示例:
>>> from rich import print
>>> print(":warning:")
⚠️
一些表情符号有两种变体,“emoji”变体以全色显示,而“Text”变体以单色显示(无论您的默认颜色设置为什么)。您可以通过添加以下任一项来指定所需的变量 "-emoji" 或 "-text" 表情符号的代码。下面是一个例子:
>>> from rich import print
>>> print(":red_heart-emoji:")
>>> print(":red_heart-text:")
要查看所有可用表情符号的列表,请运行以下命令:
python -m rich.emoji
呈现标记¶
默认情况下,当您将字符串显式传递给时,Rich将呈现控制台标记 print()
或在将字符串嵌入另一个可呈现对象(如 Table
或 Panel
。
控制台标记很方便,但如果语法与要打印的字符串冲突,您可能希望禁用它。您可以通过设置 markup=False
在 print()
方法或在 Console
构造函数。
标记API¶
通过调用,可以将字符串转换为带样式的文本 from_markup()
,它返回一个 Text
实例,您可以向其中打印或添加更多样式。