Tôi đã từng có cùng một vấn đề. Tôi không thể tìm thấy bất cứ điều gì có thể giúp tôi nên cuối cùng tôi đã tạo ra lớp ____ ____ 17-mã bên dưới. Ngoài ra còn có một đầu ra. Việc sử dụng rất đơn giản:
ptobj = PrintTable[yourdata, column_captions, column_widths, text_aligns]
ptobj.print[]
hoặc trong một dòng:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
Output:
-------------------------------------------------------------------------------------------------------------
Name | Column 1 | Column 2 | Column 3 | Column 4 | Column 5
-------------------------------------------------------------------------------------------------------------
Very long name 0 | 0 | 0 | 0 | 0 | 0
Very long name 1 | 1 | 2 | 3 | 4 | 5
Very long name 2 | 2 | 4 | 6 | 8 | 10
Very long name 3 | 3 | 6 | 9 | 12 | 15
Very long name 4 | 4 | 8 | 12 | 16 | 20
Very long name 5 | 5 | 10 | 15 | 20 | 25
Very long name 6 | 6 | 12 | 18 | 24 | 30
Very long name 7 | 7 | 14 | 21 | 28 | 35
Very long name 8 | 8 | 16 | 24 | 32 | 40
Very long name 9 | 9 | 18 | 27 | 36 | 45
Very long name 10 | 10 | 20 | 30 | 40 | 50
Very long name 11 | 11 | 22 | 33 | 44 | 55
Very long name 12 | 12 | 24 | 36 | 48 | 60
Very long name 13 | 13 | 26 | 39 | 52 | 65
Very long name 14 | 14 | 28 | 42 | 56 | 70
Very long name 15 | 15 | 30 | 45 | 60 | 75
Very long name 16 | 16 | 32 | 48 | 64 | 80
Very long name 17 | 17 | 34 | 51 | 68 | 85
Very long name 18 | 18 | 36 | 54 | 72 | 90
Very long name 19 | 19 | 38 | 57 | 76 | 95
-------------------------------------------------------------------------------------------------------------
Mã cho lớp
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
7# -*- coding: utf-8 -*-
# Class
class PrintTable:
def __init__[self, values, captions, widths, aligns]:
if not all[[len[values[0]] == len[x] for x in [captions, widths, aligns]]]:
raise Exception[]
self._tablewidth = sum[widths] + 3*[len[captions]-1] + 4
self._values = values
self._captions = captions
self._widths = widths
self._aligns = aligns
def print[self]:
self._printTable[]
def _printTable[self]:
formattext_head = ""
formattext_cell = ""
for i,v in enumerate[self._widths]:
formattext_head += "{" + str[i] + ":",">",">",">"]].print[]
Có thể nhanh chóng tổ chức dữ liệu của chúng tôi thành một định dạng dễ đọc hơn, chẳng hạn như khi dữ liệu gây tranh cãi, có thể cực kỳ hữu ích để phân tích dữ liệu và lập kế hoạch cho các bước tiếp theo. Python cung cấp khả năng dễ dàng biến các loại dữ liệu bảng nhất định thành các bảng văn bản đơn giản được định dạng độc đáo và đó là chức năng bảng.tabulate function. Trước tiên chúng tôi cài đặt thư viện Tabulation bằng cách cài đặt PIP trong dòng lệnh:tabulate library using pip install in the command line:Cách sử dụng chức năng Tabulation để tạo các bảng được định dạng độc đáo trong Python
Ảnh của Fotis Fotopoulos trên unplashCài đặt bảng
pip install tabulate
Nhập chức năng bảng
Sau đó, chúng tôi nhập chức năng Tabulation từ thư viện Tabulation trong mã của chúng tôi:tabulate function from the tabulate library in our code:
from tabulate import tabulate
Và bây giờ chúng tôi đã sẵn sàng để sử dụng chức năng Tabulation!tabulate function!
Các loại dữ liệu bảng được hỗ trợ bởi Tabulation
Hàm Tabulation có thể chuyển đổi bất kỳ điều nào sau đây thành một bảng văn bản đơn giản dễ đọc: [từ tài liệu Tabulation]tabulate function can transform any of the following into an easy to read plain-text table: [from the tabulate documentation]
- Danh sách danh sách hoặc một số khác của Iterables
- Danh sách hoặc một điều khác có thể đi được của Dicts [phím là cột]
- Dict of Iterables [phím làm cột]
- Mảng numpy hai chiều
- Mảng bản ghi Numpy [tên dưới dạng cột]
- pandas.DataFrame
Danh sách danh sách
Ví dụ: nếu chúng ta có danh sách danh sách sau:
table = [['First Name', 'Last Name', 'Age'], ['John', 'Smith', 39], ['Mary', 'Jane', 25], ['Jennifer', 'Doe', 28]]
Chúng ta có thể biến nó thành một bảng văn bản đơn giản dễ đọc hơn bằng cách sử dụng hàm bảng:tabulate function:
print[tabulate[table]]
Vì danh sách đầu tiên trong danh sách danh sách chứa tên của các cột là các phần tử của nó, chúng ta có thể đặt nó thành tên cột hoặc tên tiêu đề bằng cách truyền ‘firstrow, làm đối số cho tham số tiêu đề:headers parameter:
print[tabulate[table, headers='firstrow']]
Hàm Tabulation cũng chứa tham số bảng, cho phép chúng tôi cải thiện sự xuất hiện của bảng của chúng tôi bằng cách sử dụng giả đồ giả:tabulate function also contains a tablefmt parameter, which allows us to improve the appearance of our table using pseudo-graphics:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
0Tôi thích sử dụng đối số ‘Fancy_Grid cho bảng điều khiển:tablefmt:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
1Từ điển của Iterables
Chúng ta có thể tạo cùng một bảng ở trên bằng cách sử dụng từ điển:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
2Trong trường hợp của một từ điển, các phím sẽ là các tiêu đề cột và các giá trị sẽ là các phần tử của các cột đó. Chúng tôi chỉ định rằng các phím sẽ là các tiêu đề bằng cách truyền ‘phím, làm đối số cho tham số tiêu đề:keys will be the column headers, and the values will be the elements of those columns. We specify that the keys will be the headers by passing ‘keys’ as the argument for the headers parameter:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
3Và tất nhiên chúng ta có thể sử dụng tham số bảng để cải thiện sự xuất hiện của bảng:tablefmt parameter to improve the table’s appearance:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
4thêm một chỉ mục
Chúng tôi cũng có thể thêm một chỉ mục vào bảng của mình với tham số ShowIndex:index to our table with the showindex parameter:
Chúng ta có thể thêm một chỉ mục tùy chỉnh bằng cách chuyển trong một tham số ShowIndex. Ví dụ: nếu chúng ta muốn chỉ mục bắt đầu ở mức 1, chúng ta có thể chuyển trong một đối tượng phạm vi như đối số:showindex parameter. For example, if we want the index to start at 1, we can pass in a range object as the argument:
giá trị bị mất
Nếu chúng tôi xóa ‘Jennifer, khỏi từ điển thông tin trên, bảng của chúng tôi sẽ chứa một trường trống:info dictionary, our table will contain an empty field:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
5Nếu có bất kỳ giá trị còn thiếu nào trong bảng của chúng tôi, chúng tôi có thể chọn những gì cần điền chúng bằng cách sử dụng tham số còn thiếu. Giá trị mặc định cho thiếu là một chuỗi trống. Nếu chúng ta thay đổi nó thành N/A, thì đây là những gì mà bảng của chúng ta sẽ trông như thế nào:missing values in our table, we can choose what to fill them in with using the missingval parameter. The default value for missingval is an empty string. If we change it to ‘N/A’, this is what what our table will look like:
PrintTable[yourdata, column_captions, column_widths, text_aligns].print[]
6Tôi hy vọng hướng dẫn này về cách dễ dàng tạo các bảng được định dạng độc đáo bằng cách sử dụng chức năng Tabulation là hữu ích. Cảm ơn bạn đã đọc!