如何在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…
),以便自动关闭该文件在不过度更改原始代码的情况下,这应该可以工作。如果您需要解释任何零件,请告诉我
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()
。