如何在python中从外部文件列出数字?

如何在python中从外部文件列出数字?,python,file,Python,File,外部文件的内容如下所示: Ricky, 12 Sachin, 45 Brian, 2 Monty, 1 我基本上想做的是能够用python阅读这篇文章,并且能够对它进行排序,所以它在底部得分最低,在顶部得分最高 以下是我到目前为止得到的代码: def SaveTopScores(): return HiScores.rsplit('(',1)[1] with open("HiScores.txt", "r")as file: HiScoreslist = HiScores.r

外部文件的内容如下所示:

Ricky, 12
Sachin, 45
Brian, 2
Monty, 1
我基本上想做的是能够用python阅读这篇文章,并且能够对它进行排序,所以它在底部得分最低,在顶部得分最高

以下是我到目前为止得到的代码:

def SaveTopScores():
  return HiScores.rsplit('(',1)[1]

  with open("HiScores.txt", "r")as file:
    HiScoreslist = HiScores.read().splitlines()

  HiScoreslist.sort()

  HiScoreslist.sort(key=HiScore)

  for HiScore in HiScoreslist:
    print(HiScore)

我还是python的新手,确实需要帮助。请纠正我的错误,如果我完全错了,请告诉我,如果是,我解决问题的最佳方法是什么?

那么,有点像这样

def scores(fn):

    data = []
    with open(fn) as f:
        for ln in f:
            name, score = ln.strip().split(',')
            data.append((int(score.strip()), name))

    for score, name in sorted(data, reversed=True):
        print name, score

通过一些列表理解:

with open("HiScores.txt") as hiscores:
    scores = [line.split(',') for line in hiscores if line.strip()]
scores = [(name.strip(), int(score)) for name, score in scores]
scores.sort(key=lambda s: s[1], reversed=True)

for name, score in scores:
    print('{:<20} {:>10}'.format(name, score))
以open(“HiScores.txt”)作为HiScores的
:
分数=[line.split(','),如果line.strip()
分数=[(name.strip(),int(score))表示名称,分数表示分数]
scores.sort(key=lambda s:s[1],reversed=True)
对于名称,在分数中得分:
打印({:10})。格式(名称、分数))
这:

  • 以上下文管理器的形式打开文件(
    使用…as…
    ),以便自动关闭该文件
  • 循环文件拆分每行(前提是该行不是空的)
  • 将文件中的每个2值项转换为精简字符串和整数
  • 根据每个元组中的第二个值(分数)对文件进行排序,反转结果(最高分数在先)
  • 打印每个已格式化的条目(在20个字符的区域中将每个名称向左对齐,在10个字符的字段中将每个分数向右对齐)

  • 在不过度更改原始代码的情况下,这应该可以工作。如果您需要解释任何零件,请告诉我

    with open("HiScores.txt", "r") as fin:
        HiScores = fin.read().splitlines()
    
    HiScoresList = []
    
    for score in HiScores:
        name, score = score.split(', ')
        score = int(score.strip())
        HiScoresList.append((name, score))
    
    # Look at two score entries, and compare which score is larger
    def BestScore(a, b):
       return cmp(b[1], a[1])
    
    HiScoresList.sort(BestScore)
    
    for HiScore in HiScoresList:
        print(HiScore)
    
    印刷品:

    ('Sachin', 45)
    ('Ricky', 12)
    ('Brian', 2)
    ('Monty', 1)
    

    缩进正确吗?”因为您在函数体的第一行返回
    ing,其余的永远不会执行。感谢您的编辑:),我认为这是正确的。我做了一个类似的实践,我从电影列表中订购了电影年,结果成功了。所以我现在很困惑?如果你认为有更好的方法,请告诉我怎么做。我不知道该怎么办(您执行rsplit,搜索左括号。该字符不在输入文件中,为什么要这样做?谢谢您的帮助。:)谢谢您的帮助。:)(+1)检查空行:-)感谢您的回复。我有点理解它是如何工作的,你能给我解释一下“fin”是什么吗?
    with
    的语法是
    函数返回作为变量的文件对象:
    。在本例中,我只是调用变量,
    fin
    fout
    来表示“文件输入”或“文件输出”。这比为一个只需要一行代码的变量想出创造性的名称要容易得多。可以随意调用它:-)只要确保对同一个变量调用
    .read()