Вывести первое слово в каждой строке из файла .txt в python - PullRequest
0 голосов
/ 20 февраля 2020

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

Darnell 96 54 94 98 76

Brody 50 65 65 65 70 

Anna 76 54 76 76 76

Conor 95 95 95 95 

Я хочу, чтобы в первой строке вывода отображались имена учеников, например:

Name of students in class:
Anna Brody Conor Darnell

Мой текущий код

   f = open(argv[1])
   while True:
      line = f.readline().strip()
      if line:
         print(line)

Я знаю, что мне нужно использовать функцию sorted(). Однако, когда я пытаюсь реализовать это, я просто запутываю код.

Мне известны подобные вопросы. Однако, будучи новичком в python, некоторые из них выходят далеко за пределы моей головы. Любая небольшая информация помогает. Спасибо!

1 Ответ

4 голосов
/ 20 февраля 2020

Вы можете попробовать это.

Я предлагаю использовать with open(...), потому что вам не нужно явно использовать close().

with open(argv[-1]) as f:
    names=[]
    for line in f:
        names.append(line.split()[0])

print(*sorted(names),sep=' ')
#Anna Brody Conor Darnell

Как рекомендует @Jan, вы можете написать все это с использованием понимания списка.

Использует ли использование списка для автоматического чтения файла файл, вызывая close () Я написал ниже в соответствии с этой ссылкой.

print(*sorted([line.split()[0] for line in open('score.txt','r') if line.split()]),sep=' ') #This single code does what you wanted
#Anna Brody Conor Darnell

Но я предлагаю использовать этот ответ ниже.

with open(argv[-1],'r') as f:
    print(*sorted([line.split()[0] for line in f],sep=' ')

Используйте это, если у вас есть разрыв между строками.

with open('score.txt','r') as f:
        names=[]
        for line in f:
                if line.strip():
                        names.append(line.split()[0])
print(*sorted(names),sep=' ')
...