Python,排序格式化输出

2024-10-01 00:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个简短的程序来读取一个文本文件,其中包括我喜欢的恐怖电影的名字,它们的发行日期,以及我对它们的评价(每部电影都用冒号隔开)。然后,它会使用str.格式(). 我想知道的是如何对输出进行排序,比如按发布日期或评级。以下是我所拥有的:

with open('filename', 'r') as fh:
    for each_line in fh:
        (title, date, rating)=each_line.split(':')
        print('{0:^40} {1:^10} {2:^7}'.format(title, date, rating)

我只是想知道如何在格式化输出中引入排序;我只是想搞不懂。我是Python新手并自学,这个简单的——我确定——这个问题让我难住了。在

如有任何提示,将不胜感激。在

谢谢


Tags: 程序date电影排序titleline名字评价
1条回答
网友
1楼 · 发布于 2024-10-01 00:29:00

如果你想对它们进行排序,就不能在循环时打印它们:显然,在排序之前必须知道每个值。在

我建议首先将整个文件的内容加载到一个列表中:

movies = [each_line.split(':') for each_line in fh]

然后你可以按你想要的任何键进行排序。按等级排序:

^{pr2}$

请注意,您需要转换为datetime,以便按日期正确排序。在

然后,您可以循环浏览这些已排序的电影并打印:

for movie in sorted_movies:
    (title, date, rating) = movie
    print('{0:^40} {1:^10} {2:^7}'.format(title, date, rating)

稍微紧凑一点:

movies = [line.split(':') for line in fh]
for title, date, rating in sorted(movies, lambda m: int(m[2])):
    print('{0:^40} {1:^10} {2:^7}'.format(title, date, rating)

相关问题 更多 >