2015-11-16 2 views
0

У меня есть некоторая информация, хранящаяся в текстовом файле, на основе людей, принимающих тест, и полученных баллов. Каждый раз, когда они снова проходят тест, добавляется новый балл. Текстовый файл выглядит следующим образом с данными, хранящимися в нем:Организация и сортировка данных из текстового файла

Mike 5 7 9 
Terry 6 6 9 
Paul 4 5 6 

Я хотел бы иметь возможность получить информацию из текстового файла и определить наибольшее количество баллов для каждого человека, так что он распечатал их имя и один номер.

Если я извлечь данные из файла и сохранить его в виде списка, используя этот код:

with open("classa.txt") as f: 
    content = f.readlines() 
    print(content) 

то данные распечатывается так: ['Mike 5 7 9\n', 'Terry 6 6 9\n', 'Paul 4 5 6']

Я предполагаю, что Мне действительно нужно создать несколько вложенных списков в списке. Один для каждого человека, но я не уверен, как это сделать и как разбирать данные, чтобы я мог работать с ним в столбцах и игнорировать столбец «Имя» при работе с числовыми значениями, которые следуют за ним.

Было бы лучше, если данные в текстовом файле с разделителями-запятыми был так, что читать, как это:

Mike,5,7,9 
Terry,6,6,9 
Paul,4,5,6 

Любая помощь будет оценена. Я немного из глубины.

ответ

2
with open("names.txt") as f: 
    # splitlines of the content 
    content = f.read().splitlines() 
    for line in content: 
     # split at spaces 
     splittedLine = line.split(" ") 

     # get the first element which is the name 
     name = splittedLine[0] 

     # get the all the elements except the first 
     scores = splittedLine[1:] 

     # get the last element of the sorted list which is the highscore 
     highscore = sorted(scores)[-1] 
     print("{} : {}".format(name, highscore)) 

Я прокомментировал код, поэтому я надеюсь, что все понятно.

Выход:

Майк: 9

Терри: 9

Пол: 6

+0

Это отлично. Спасибо. Я сначала попробую, когда вернусь к компьютеру. – mjolnir

+0

Принято. Ура! – mjolnir

Смежные вопросы