Как напечатать каждый элемент списка в отдельных строках, перед которыми стоит номер строки в python?
Как я могу напечатать каждый отдельный элемент списка в отдельных строках, а номер строки печатать перед элементом? Информация о списке также будет получена из текстового файла.
Пока у меня есть,
import sys
with open(sys.argv[1], 'rt') as num:
t = num.readlines()
print("\n"[:-1].join(t))
Который в настоящее время дает показания:
Blah, blah, blah
etc, etc, etc
x, x, x
Но я хочу это прочтение:
1. Blah, blah, blah
2. etc, etc, etc
3. x, x, x
Спасибо за помощь.
3 ответа
Ты можешь использовать enumerate()
и использовать str.rstrip()
удалить все типы конечных пробелов из строки. и вы также можете использовать rstrip('\n')
если вы уверены, что перевод строки будет \n
только.:
for i,x in enumerate(t,1):
print ("{0}. {1}".format(i,x.rstrip()))
С помощью fileinput.input
можно перебирать файл строка за строкой. когда fileinput.input
возвращает следующую строку, мы enumerate
это отслеживать номер строки. Поскольку вход уже содержит новую строку, которую мы используем end=""
в print
метод, поэтому он не добавляет ненужной новой строки. С помощью format
преобразовать номер строки и содержимое в форматированное представление.
import fileinput
for number, line in enumerate(fileinput.input(['some_file.txt']), 1):
print('{0}. {1}'.format(number, line), end="")
Это кажется самым легким с enumerate
, печатая каждую строку, как вы идете:
import sys
with open(sys.argv[1], 'r') as num:
for i,line in enumerate(num,1):
print("%d. %s"%(i,line[:-1])) #equivalent to `"{0}. {1}".format(i,line[:-1])`
Конечно, вы можете обернуть все это в генератор, если вы хотите использовать join
:
def number_lines(fname):
with open(fname,'r') as f:
for i,line in enumerate(f,1):
yield "%d. %s"%(i,line[:-1])
print('\n'.join(number_lines(sys.argv[1])))