我有以下表格:进口经营者
from prettytable import PrettyTable
table = PrettyTable(["Name","Month", "Grade"])
table.title="title test"
table.add_row(["Joe","Jan", 90])
table.add_row(["Sally", "Feb", 100])
table.add_row(["Bill", "Mar", 90])
table.add_row(["Alice", "April", 90])
print(table.get_string( sortby="Month"))
生成以下内容:
+-----------------------+
| title test |
+-------+-------+-------+
| Name | Month | Grade |
+-------+-------+-------+
| Alice | April | 90 |
| Sally | Feb | 100 |
| Joe | Jan | 90 |
| Bill | Mar | 90 |
+-------+-------+-------+
我试图按Month
列排序,但由于它是一个字符串,它不像datetime
一样对待它。你能告诉我如何在prettytable中保存datetime对象,以便我可以对其进行排序吗?
您可以在get_string
方法上使用sort_key
关键字参数,并向其传递一个lambda函数,将月份名称转换为整数:
from prettytable import PrettyTable
months = ['Jan', 'Feb', 'Mar', 'Apr', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
table = PrettyTable(["Name","Month", "Grade"])
table.title="title test"
table.add_row(["Joe","Jan", 90])
table.add_row(["Sally", "Feb", 100])
table.add_row(["Bill", "Mar", 90])
table.add_row(["Alice", "Apr", 90])
print(table.get_string(sortby="Month", sort_key=lambda row: months.index(row[2]))) # where row[2] is the second item of the row (it's 1-based, *not* 0-based)
请注意,传递给lambda函数的行有四项—您将希望使用基于1的索引来访问其中的列,而不是像您可能倾向于认为的那样基于0。