如何保存datetime对象的漂亮表排序为日期,而不是像一个字符串



我有以下表格:进口经营者

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。

相关内容

  • 没有找到相关文章

最新更新