在文件

时间:2017-02-13 10:27:21

标签: python

我是python的新手。最近我遇到了一个问题,我想打印假冒游戏的排序排行榜。

这是我的代码:

myfile = open('Results.txt')
title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('Player Nickname','Matches Played','Matches Won','Matches Lost','Points')
print(title)
for line in myfile:
    item = line.split(',')
    points = int(item[2]) * 3
    if points != 0:
        result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(item[0], item[1], item[2], item[3].rstrip(), points)
        print(result)

以下是文件中的一些示例

Leeroy,19,7,12
Jenkins,19,8,11
Tyler,19,0,19

我必须使用.rstrip()删除\ n转义代码,以便格式正常工作。

有没有真正简单的文件排序方法?而不是像lambda这样的东西,只是非常复杂的东西?

1 个答案:

答案 0 :(得分:0)

  

sortedScores =已排序(得分,键= lambda x:x [2] * 3)

你快到了!你需要做的就是:

sortedScores = sorted(scores, key=lambda x: int(x[2])*3)

您在将数值乘以

之前忘记将其转换为整数

这是一种方法 - 只需在读取文件时添加计算出的点,然后对结果进行排序并打印出来:

data = []

for line in myfile:
    item = line.split(',')
    points = int(item[2]) * 3
    item.append(points)
    data.append(item)

# Now, sort it, the easiest way is to tell it to sort by the last item
import operator
data = sorted(data, key=operator.itemgetter(4), reverse=True)

# or, you can write a lambda!
data = sorted(data, key=lambda x: x[4], reverse=True)

for item in data: 
    result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(*item)
    print(result)