Hướng dẫn python rich text to string - python văn bản đa dạng thức thành chuỗi

Rich có một lớp

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
9 bạn có thể sử dụng để đánh dấu các chuỗi bằng các thuộc tính màu sắc và phong cách. Bạn có thể sử dụng một thể hiện văn bản bất cứ nơi nào một chuỗi được chấp nhận, điều này cung cấp cho bạn rất nhiều quyền kiểm soát trong bản trình bày.

Bạn có thể coi lớp này giống như một chuỗi có các vùng văn bản được đánh dấu. Không giống như

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
0 tích hợp, một thể hiện văn bản là có thể thay đổi và hầu hết các phương thức hoạt động tại chỗ thay vì trả lại một thể hiện mới.

Một cách để thêm một kiểu vào văn bản là phương thức

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
1 áp dụng một kiểu cho một phần bù bắt đầu và kết thúc. Đây là một ví dụ:

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)

Điều này sẽ in "Xin chào, thế giới!" đến thiết bị đầu cuối, với từ đầu tiên trong Magenta đậm.

Ngoài ra, bạn có thể xây dựng văn bản theo kiểu bằng cách gọi

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
2 để thêm một chuỗi và kiểu vào cuối văn bản. Đây là một ví dụ:

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)

Nếu bạn muốn sử dụng văn bản đã được định dạng với mã ANSI, hãy gọi

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
3 để chuyển đổi nó thành đối tượng
text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
9:

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)

Vì việc xây dựng các thể hiện văn bản từ các phần là một yêu cầu phổ biến, Rich cung cấp

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
5 sẽ kết hợp các chuỗi hoặc các cặp chuỗi và kiểu, và trả về một thể hiện văn bản. Ví dụ sau tương đương với mã ở trên:

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)

Bạn có thể áp dụng một kiểu cho các từ đã cho trong văn bản với

text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
6 hoặc cho cuộc gọi điều khiển cuối cùng
text = Text.from_ansi("\033[1mHello, World!\033[0m")
console.print(text.spans)
7 để làm nổi bật văn bản khớp với biểu thức chính quy.

Thuộc tính văn bản

Lớp văn bản có một số tham số bạn có thể đặt trên hàm tạo để sửa đổi cách hiển thị văn bản.

  • text = Text.from_ansi("\033[1mHello, World!\033[0m")
    console.print(text.spans)
    
    8 nên là bên trái, trung tâm, trung tâm, bên phải, hoặc đầy đủ, và sẽ ghi đè hành vi biện minh mặc định.

  • text = Text.from_ansi("\033[1mHello, World!\033[0m")
    console.print(text.spans)
    
    9 nên là trò chơi Fold Fold, Cây trồng, hoặc Ellipsis, và sẽ ghi đè tràn mặc định.

  • text = Text.assemble(("Hello", "bold magenta"), " World!")
    console.print(text)
    
    0 Ngăn chặn gói nếu văn bản dài hơn thì chiều rộng có sẵn.

  • text = Text.assemble(("Hello", "bold magenta"), " World!")
    console.print(text)
    
    1 Đặt số lượng ký tự trong một tab.

Một thể hiện văn bản có thể được sử dụng thay cho một chuỗi đơn giản hầu như ở mọi nơi trong API phong phú, điều này cung cấp cho bạn rất nhiều quyền kiểm soát trong cách kết xuất văn bản trong các kết xuất phong phú khác. Chẳng hạn, ví dụ sau đây sắp xếp văn bản trong một

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
2:

from rich import print
from rich.panel import Panel
from rich.text import Text
panel = Panel(Text("Hello", justify="right"))
print(panel)

Ảnh của Fietzfotos trên Pixabay

Bạn đang sử dụng thiết bị đầu cuối nhiều hơn các hệ điều hành dựa trên GUI? Hoặc, bạn có thường phát triển các chương trình giao diện dòng lệnh bằng Python không? Gần đây, tôi đã tìm thấy một thư viện Python tuyệt vời có tên là Rich Rich trên Github, nơi đã có 15,2k sao vào thời điểm tôi viết bài viết này.

Nó không chỉ có thể hiển thị văn bản về màu sắc và kiểu dáng trong thiết bị đầu cuối mà còn cả biểu tượng cảm xúc, bảng, thanh tiến trình, đánh dấu và thậm chí mã được tô sáng. Nếu bạn đã đọc một trong những bài viết trước đây của tôi dưới đây:

Thư viện giàu có của người Viking gần như có thể làm mọi thứ mà tôi đã giới thiệu trong bài viết đó, cũng như một số thứ tuyệt vời khác.

Trong bài viết này, tôi sẽ giới thiệu thư viện này với các ví dụ để hiển thị khả năng của nó.

Giới thiệu & Cài đặt

Nguồn hình ảnh: https://github.com/willmcgugan/rich (chính thức github readme.md)

Hình ảnh trên cho thấy các tính năng chính mà thư viện có thể làm. Bạn có thể tìm thấy dự án trên GitHub:

Thư viện yêu cầu Python 3.6.1 trở lên là chức năng. Cài đặt thư viện khá đơn giản vì chúng tôi có thể sử dụng

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
3.

pip install rich

In phong phú

Trước tiên, hãy nhìn vào cách nó có thể in.

Tags và biểu tượng cảm xúc

Nó hỗ trợ các thẻ định dạng và biểu tượng cảm xúc.

from rich import printprint("Hello, [bold blue]Towards Data Science[/bold blue]!", ":thumbs_up:", "[u]By[/u]", "[i]Christopher Tao[/i]")

Cú pháp nổi bật

Nó cũng có thể tự động định dạng một từ điển và làm nổi bật các từ khóa và đầu ra của Python. Ví dụ: hãy để ra môi trường cục bộ trong Python bằng phương pháp

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
4.

Ví dụ trên cho thấy sự khác biệt giữa đầu ra có và không có thư viện phong phú.

Phong phú lại

Chúng tôi cũng có thể cài đặt Python Repling bằng thư viện phong phú để mọi cấu trúc dữ liệu có thể được in và tô sáng dựa trên các tiêu chuẩn.

from rich import pretty
pretty.install()
{"bool1":True, "bool2":False, "number":123.45, "string":"Hello!", "dict":{"key":"value"}, "list":[1,2,3], "class":type(1)}

Tài liệu in đẹp của các lớp/phương pháp

Bạn có thể biết rằng chúng ta có thể sử dụng các phương thức

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
5 và
text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
6 để hiển thị tài liệu của lớp/đối tượng/phương thức Python. Tuy nhiên, thật khó để đọc trong thiết bị đầu cuối.

str.__doc__
help(str)

Bằng cách sử dụng thư viện phong phú, chúng ta có thể sử dụng chức năng

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
7 của nó để in đẹp tài liệu trên.

from rich import inspect
inspect(str, methods=True)

Cờ

text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
8 sẽ quyết định xem các phương thức có được hiển thị trong tài liệu hay không. Nếu đúng, nó tương đương với
text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
6. Nếu không, nó tương đương với
text = Text.assemble(("Hello", "bold magenta"), " World!")
console.print(text)
5.

Cú pháp nổi bật của mã Python

Tôi đoán bạn đã thắng được ngạc nhiên khi thư viện có thể in mã bằng cú pháp được tô sáng bởi vì chúng ta có thể thấy tính năng này trong ví dụ trước.

Hãy để tôi minh họa nó bằng một ví dụ đơn giản. Dưới đây chỉ là một đoạn mã ngẫu nhiên trong ý chính của tôi.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
0

Nó giống như trong một IDE dựa trên GUI, siêu tuyệt vời!

In nâng cao bằng cách sử dụng đối tượng bảng điều khiển

Thư viện phong phú cũng cung cấp một mô-đun có tên là Bảng điều khiển trực tuyến cho phép các kiểu in tùy chỉnh hơn và một số tính năng ngoài hộp. Chúng ta có thể nhập mô -đun và khởi tạo đối tượng như sau.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
1

Ví dụ: phương thức

from rich import print
from rich.panel import Panel
from rich.text import Text
panel = Panel(Text("Hello", justify="right"))
print(panel)
1 của đối tượng console có thể in đầu ra kiểu nhật ký trên màn hình.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
2

Xin lưu ý rằng thời gian được tự động thêm vào nhật ký.

Đối tượng Console cũng có cờ

from rich import print
from rich.panel import Panel
from rich.text import Text
panel = Panel(Text("Hello", justify="right"))
print(panel)
2 có thể là một công cụ gỡ lỗi rất hữu ích. Nó xuất ra tất cả các biến cục bộ hiện tại trong bộ nhớ.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
3

Tích hợp với thư viện ghi nhật ký

Python có một thư viện ghi nhật ký tích hợp được sử dụng để hiển thị nhật ký với các cấp độ và định dạng khác nhau. Thư viện phong phú có thể tích hợp liền mạch với thư viện để cung cấp trải nghiệm in đẹp hơn nữa.

Hãy để nhập thư viện ghi nhật ký và khởi tạo đối tượng nhật ký trước.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
4

Sau đó, chúng ta có thể xuất ra một số nhật ký để xem những gì xảy ra.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
5

Rất tuyệt, nhật ký của chúng tôi sẽ được tô màu trong thiết bị đầu cuối bây giờ.

Python Traceback Beautifier

Tôi thực sự ngạc nhiên bởi tính năng này. Tôi chắc chắn bạn cũng vậy. Thư viện phong phú có thể hiển thị dấu vết của mọi kỳ vọng theo một cách rất dễ đọc. Tính năng này là ngoài hộp thực sự là sự kết hợp của tất cả các tính năng trên.

Để minh họa tất cả các yếu tố của dấu vết đẹp, chúng ta cần có mã tương đối phức tạp. Vì vậy, vui lòng cho phép tôi sử dụng ảnh chụp màn hình từ trang GitHub Readme chính thức.

Nguồn hình ảnh: https://github.com/willmcgugan/rich (chính thức github readme.md)

Bảng phong phú

Thư viện phong phú cũng có thể hiển thị một bàn rất đẹp. Quan trọng hơn, kiểu dáng và văn bản từ sẽ được điều chỉnh tự động dựa trên chiều rộng của cửa sổ thiết bị đầu cuối.

Dưới đây là một đoạn mã có thể tạo bảng bằng thư viện phong phú. Cuối cùng, nó sẽ được in.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
6

Như đã đề cập ở trên, bảng sẽ phù hợp với chiều rộng hiện tại của cửa sổ thiết bị đầu cuối để đảm bảo rằng bảng được hiển thị hoàn hảo.

Thanh tiến bộ phong phú

Thư viện phong phú cũng cung cấp tính năng thanh tiến độ tuyệt vời. Việc sử dụng cũng cực kỳ đơn giản.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
7

Tất nhiên, thanh tiến trình rất linh hoạt có thể được tùy chỉnh với nhiều khía cạnh như hiển thị nhiều thanh tiến trình cùng nhau và văn bản nhãn tiến trình chi tiết như sau.

GIF Nguồn: https://github.com/willmcgugan/rich (chính thức github readme.md) GIF Nguồn: https://github.com/willmcgugan/rich (chính thức github readme.md)

Đánh dấu phong phú

Thư viện phong phú cũng có thể hiển thị văn bản đánh dấu trong thiết bị đầu cuối.

Tôi đã tạo một tệp đánh dấu mẫu trước.Sau đó, chúng tôi có thể nhập mô -đun

from rich import print
from rich.panel import Panel
from rich.text import Text
panel = Panel(Text("Hello", justify="right"))
print(panel)
3 trong thư viện phong phú để hiển thị nó.

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)
8

Mặc dù nó không thể hiển thị các tiêu đề trong các kích thước phông chữ khác nhau vì giới hạn của thiết bị đầu cuối, nhưng nó vẫn có thể phân biệt chúng bằng cách sử dụng các kiểu khác nhau.

Bản tóm tắt

Ảnh của Engin_akyurt trên pixabay

ĐƯỢC RỒI.Vui lòng cho phép tôi dừng lại ở đây.Có quá nhiều tính năng ấn tượng trong thư viện này mà tôi có thể hiển thị tất cả chúng trong một bài viết, mặc dù tôi đã chứng minh những thứ mà tôi nghĩ là quan tâm nhất.Vẫn còn nhiều tính năng hơn như các cột, bảng điều khiển, đệm và các nhóm kết xuất cũng rất tuyệt vời.Rất khuyến khích kiểm tra chúng một mình.

Nếu bạn cảm thấy các bài viết của tôi là hữu ích, vui lòng xem xét tham gia thành viên trung bình để hỗ trợ tôi và hàng ngàn nhà văn khác!(Nhấp vào liên kết ở trên)