Сортировка и выравнивание содержимого текстового файла в Python - PullRequest
2 голосов
/ 27 марта 2010

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

Emily, 6
Sarah, 4
Jess, 7

Это мой код, где текстовый файл читается и печатается:

elif userCommand == 'V':
    print "High Scores:"
    scoresFile = open("scores1.txt", 'r')
    scores = scoresFile.read().split("\n")
    for score in scores:
        print score
    scoresFile.close()

Должен ли я преобразовать эту информацию в списки, чтобы иметь возможностьсделать это?Если так, то как мне это сделать?

При записи в файл я добавил в конец символ '\ n', поскольку каждая запись должна быть напечатана в новой строке.

Спасибо

Ответы [ 3 ]

5 голосов
/ 27 марта 2010

Вы можете использовать модуль csv , а затем использовать sorted для сортировки.

Допустим, у Scores1.txt есть следующее

Richard,100
Michael,200
Ricky,150
Chaung,100

Test

import csv

reader=csv.reader(open("scores1.txt"),dialect='excel')
items=sorted(reader)
for x in items:
    print x[0],x[1]

...
Emily  6
Jess  7
Sarah  4
2 голосов
/ 27 марта 2010

Похоже, никто не ответил на "выровненную" часть вашего запроса.Кроме того, неясно, хотите ли вы, чтобы результаты сортировались в алфавитном порядке по имени или точнее по баллам.В первом случае, в алфавитном порядке (в предположении Python 2.6):

with open("scores1.txt", 'r') as scoresFile:
  names_scores = [[x.strip() for x in l.split(',', 1)] for l in scoresFile]
# compute column widths
name_width = max(len(name) for name, score in names_scores)
score_width = max(len(score) for name, score in names_scores)
# sort and print
names_scores.sort()
for name, score in names_scores:
  print "%*s %*s" % (name_width, name, score_width, score)

Если вы хотите убывать по убыванию, просто измените строку names_scores.sort() на две:

def getscore_int(name_score): return int(name_score[1])
names_scores.sort(key=getscore_int, reverse=True)
0 голосов
/ 27 марта 2010
  1. для сортировки содержимого в Python, вы можете использовать sort () / sorted () .
  2. для печати, вы можете использовать print со спецификаторами формата, str.rjust /str.ljust, pprint и т. д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...