Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

Lepaskan: 2023-08-10 16:09:54
ke hadapan
1701 orang telah melayarinya

Baru-baru ini saya melihat bungali Perpustakaan membolehkan anda Output konsol adalah hebat ! rich!

Jika anda tidak tahu kewujudan perpustakaan ini, anda boleh lihat dan mungkin anda akan jatuh cinta dengannya!

Rich ialah perpustakaan Python yang memberikan anda teks yang kaya dan pemformatan yang cantik dalam terminal anda.

API yang Kaya memudahkan untuk menambah pelbagai warna dan gaya pada output terminal. Kaya juga boleh melukis jadual yang cantik, bar kemajuan, penurunan harga, kod sumber dengan penyerlahan sintaks dan jejak balik, dan senarai itu diteruskan.

Kaya tersedia untuk Linux, OSX dan Windows. True Colors/Emojis berfungsi dengan Terminal Windows baharu, Terminal klasik Windows dihadkan kepada 8 warna.

Kaya juga boleh digunakan dengan komputer riba Jupyter tanpa konfigurasi tambahan.

Direktori:


    1.
  • 2
  • 3. Demonstrasi fungsi

    • 3.1. Warna dan gaya

    • 3.

      Format teks
    • ing
    • 3.4
    • 3.5. Emoji
    • 3.6 Jadual
    • Sintaks 8. Output format markdown

    • 3.9 Bar kemajuan struktur pokok 4px ;jejari sempadan: 4px;margin-kanan: 2px;margin-kiri: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(228 , 105, 24);warna latar belakang: rgb(239, 239, 239);saiz fon: 0.875em;tinggi garis: 1.6 !important;">JupyterLab = 3.0.11, temanya gelap

    • 1. Penyediaan
    • Pemasanganperpustakaan kaya

      pip install rich
      Salin selepas log masuk

      Contoh mudah
    • rreee
    • Kita dapat melihat bahawa dalam
    • Hello

      Output dunia dalam contoh di atas,

      Hello
    ditetapkan kepada italik merah, dan Dunia ialah nilai lalai.

Lihat contoh lain

from rich import print

print("[italic red]Hello[/italic red] World!")
Salin selepas log masuk

JupyterLab = 3.0.11,主题为暗色

1. 准备工作

安装richDalam contoh ini, kami menggunakan

Panel

(panel) Garis besar panel berwarna merah dan salinan kandungan berwarna kuning tebal.

以上只是简单介绍两个小例子,接下来我们来看看Rich是如何rich各种精美的输出吧!

2. Rich的功能特色

在jupyterlab里运行(截图是在jupyterlab暗黑主题下截取)

%run -m rich
Salin selepas log masuk

在cmd终端里运行

python -m rich
Salin selepas log masuk

可以得到下面这个展示rich库功能特色的简要说明,我们能清晰的看出它所具备的及支持的精美格式诸如:

  • 颜色
  • 样式
  • 文本对齐方式
  • 多语言支持
  • 标记符号&表情
  • 表格
  • 语法高亮
  • markdown
  • 进度条
  • ...+more
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3. 功能演示

我们这里只做简单的功能案例演示,详细的使用大家可以直接查看官方文档。

https://rich.readthedocs.io/en/stable/

3.1. 颜色与样式

我们先构造一个控制台对象,然这个对象有一个print方法,和python内置的功能基本一致。和内置的不同在于Rich会将文字自动换行以适合终端宽度,并且有几种方法可以为输出添加颜色和样式。

from rich.console import Console

console = Console()
console.print("Hello", style="magenta")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

可以看到,输出的Hello是酒红色的,颜色通过style参数设置,这里颜色是英文单词,同时也可以是16进制颜色码RGB或者颜色color(n)表示等等。

console.print("Rich库有点意思啊", style="red on white")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

上面这个例子,我们发现还可以通过style设置文本颜色及底色。

另外,我们还可以这样设置文本样式:通过[red][/red]来设置其框定的区域文本颜色与样式。

from rich import print

print("[bold red]alert![/bold red] Something happened")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.2. 文本格式

Rich有个Text类,用于我们对长文本进行颜色与样式调整。

from rich.console import Console
from rich.text import Text

console = Console()
text = Text("0123456789")
text.stylize("bold magenta", 0, 6)
console.print(text)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

对于上面这个案例,将字符串0123456789[0,6)下标的字符颜色设置为酒红色粗体。

from rich import print
from rich.panel import Panel
from rich.text import Text

panel = Panel(Text("大家好,我是才哥。欢迎关注微信公众号:可以叫我才哥!", justify="center"))
print(panel)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

这个例子中,我们可以看到它是将文本居中对齐在一个面板中。

3.3. 文本高亮

Rich可以通过正则或者其他形式让文本中指定的字符高亮。

比如,我们通过正则让文本中邮箱字符高亮:

from rich.console import Console
from rich.highlighter import RegexHighlighter
from rich.theme import Theme

class EmailHighlighter(RegexHighlighter):
    """Apply style to anything that looks like an email."""

    base_style = "example."
    highlights = [r"(?P<email>[\w-]+@([\w-]+\.)+[\w-]+)"]


theme = Theme({"example.email": "bold magenta"})
console = Console(highlighter=EmailHighlighter(), theme=theme)
console.print("Send funds to money@example.org")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

比如,我们可以将文本每个字符设置成随机的颜色:

from random import randint

from rich import print
from rich.highlighter import Highlighter


class RainbowHighlighter(Highlighter):
    def highlight(self, text):
        for index in range(len(text)):
            text.stylize(f"color({randint(16, 255)})", index, index + 1)


rainbow = RainbowHighlighter()
print(rainbow("大家好,我是才哥,是不是每个字的颜色都不一样?"))
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.4. 输入提示

Rich有个Prompt类,用于提示我们进行输入(类似input功能),不过它还支持指定值输入及选择判断等。

提示输入:

from rich.prompt import Prompt

name = Prompt.ask("Enter your name")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

指定值输入:

from rich.prompt import Prompt

name = Prompt.ask("Enter your name", choices=["才哥", "可以叫我才哥", "天才"], default="可以叫我才哥")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

选择判断:

from rich.prompt import Confirm

is_rich_great = Confirm.ask("Do you like rich?")

assert is_rich_great
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.5. 表情符号

将名称放在两个冒号之间即可在控制台输出中插入表情符号。

from rich.console import Console

console = Console()
console.print(":smiley: :pile_of_poo: :thumbs_up: ")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.6. 表格

Rich 可以使用 Unicode 框字符来呈现多变的表格,它包含多种边框,样式,单元格对齐等格式设置的选项。

from rich.console import Console
from rich.table import Table

table = Table(title="Star Wars Movies")

table.add_column("Released", justify="right", style="cyan", no_wrap=True)
table.add_column("Title", style="magenta")
table.add_column("Box Office", justify="right", style="green")

table.add_row("Dec 20, 2019", "Star Wars: The Rise of Skywalker", "$952,110,690")
table.add_row("May 25, 2018", "Solo: A Star Wars Story", "$393,151,347")
table.add_row("Dec 15, 2017", "Star Wars Ep. V111: The Last Jedi", "$1,332,539,889")
table.add_row("Dec 16, 2016", "Rogue One: A Star Wars Story", "$1,332,439,889")

console = Console()
console.print(table)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.7. 语法高亮

Rich 使用pygments库来实现语法高亮显示

from rich.console import Console
from rich.syntax import Syntax

my_code = &#39;&#39;&#39;
def iter_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
    """Iterate and generate a tuple with a flag for first and last value."""
    iter_values = iter(values)
    try:
        previous_value = next(iter_values)
    except StopIteration:
        return
    first = True
    for value in iter_values:
        yield first, False, previous_value
        first = False
        previous_value = value
    yield first, True, previous_value
&#39;&#39;&#39;
syntax = Syntax(my_code, "python", theme="monokai", line_numbers=True)
console = Console()
console.print(syntax)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.8. markdown格式输出

Rich 可以呈现markdown,并可相当不错的将其格式转移到终端。为了渲染 markdown,导入Markdown类,并使用包含 markdown 代码的字符串来构造它,然后将其打印到控制台。

MARKDOWN = """
# 这是一级标题

Rich 库能比较**完美**的输出markdown.

1. This is a list item
2. This is another list item

```python
from rich.console import Console
from rich.markdown import Markdown

console = Console()
md = Markdown(MARKDOWN)
console.print(md)
```
![二维码](https://gitee.com/dxawdc/pic/raw/master/image/qrcode_for_gh_ce68560ed124_258.jpg)
"""
from rich.console import Console
from rich.markdown import Markdown

console = Console()
md = Markdown(MARKDOWN)
console.print(md)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

3.9. 进度条

Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。基本用法:用track函数调用任何程序并迭代结果。

from rich.progress import track
import time

for step in track(range(100)):
    time.sleep(0.1)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.
进度条

3.10. 树结构

Rich有个Tree类,用于展示树结构。

from rich.tree import Tree
from rich import print

tree = Tree("地球")
baz_tree = tree.add("亚洲")
baz_tree.add("[red]中国").add("[green]北京").add("[yellow]海淀区")
print(tree)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

+ More

Padding填充:

from rich import print
from rich.padding import Padding

test = Padding("Hello", (2, 4), style="on blue", expand=False)
print(test)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

Panel面板:

from rich import print
from rich.panel import Panel

print(Panel("Hello, [red]World!", title="Welcome"))
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

layout布局:

from rich import print
from rich.layout import Layout

layout = Layout()
layout.split_column(
    Layout(name="upper",size = 10),
    Layout(name="lower",size = 10)
)

layout["lower"].split_row(
    Layout(name="left"), Layout(name="right"),

    ) 
layout["right"].split(
    Layout(Panel("Hello")),
    Layout(Panel("World!"))
)
print(layout)
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

Live动态:

import time

from rich.live import Live
from rich.table import Table

table = Table()
table.add_column("Row ID")
table.add_column("Description")
table.add_column("Level")

with Live(table, refresh_per_second=4):  # update 4 times a second to feel fluid
    for row in range(12):
        time.sleep(0.4)  # arbitrary delay
        # update the renderable internally
        table.add_row(f"{row}", f"description {row}", "[red]ERROR")
Salin selepas log masuk
Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.

Live


Atas ialah kandungan terperinci Keluaran Python boleh menjadi sangat mewah Pustaka pihak ketiga ini patut diketahui.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Python当打之年
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!