从一行中的列表中搜索一个数字,打印该行

时间:2015-12-06 02:54:47

标签: python

import heapq

def main():
        with open("highscores.txt", "r+")as file:
        file.seek(0)
        scores = file.readlines()

    scorelist = []
    for line in scores:
        raw = line.split()
        score = float(raw[1])
        scorelist.append(score)
    print(scorelist)
    topfive = heapq.nsmallest(5,scorelist)
    print(topfive)
    for i in scorelist:
        for line in scores:
            if scorelist[i] in line:
                print(line)
main()

您好,

我试图在文本文件中搜索列表topfive中每个数字的每一行。如果该数字在该行中,则应打印该行。我一直得到错误:列表索引必须是整数或切片,而不是浮点数。任何人都可以帮助我,对不起,我是编程新手。

这是txt文件的内容:

alex .34
donny .41
jeezy .31
lonny .11
gonny .31
monty .53
pip .65

1 个答案:

答案 0 :(得分:0)

我不太确定你的意思。如果你在

时得到正确的分数
print(scorelist)

然后您应该看到并非所有分数都是整数,即某些分数具有小数点。让我们说

scorelist = [1, 2, 3.5]

当您遍历分数列表

for i in scorelist:
    print i

你应该得到

1

2

3.5

然后当你打电话

scorelist[i]

3.5导致错误。希望这有助于

编辑:这可能会对您有所帮助。迭代python中的列表将在每次迭代时返回列表的元素。你没有得到i的索引。实际上你甚至不需要索引

for score in scorelist:
    for line in scores:
        if score in line:
            print(line)