Как пронумеровать выводимые данные с помощью format в python?
Пронумеруйте список начиная с 1, под число отдайте 3 символа, под Имя: 40, выравнивание по правому краю с заполнением точками (показан частичный вывод).
Есть следующий код
rows = open('IMDbnames_f.csv', encoding="utf8").read().split("\n")
for r in rows:
cols = r.split("#")
if cols[2] != '' and int(cols[2])> 200 and cols[4] == '':
print('{:.>40}'.format(cols[1]))
Необходимо сделать вывод в таком формате:
Точки поставить смогла, но как сделать такую нумерацию - вообще не понимаю.
import itertools
def make_eprint():
c = itertools.count(start=1)
def eprint(*args, **kwargs):
kwargs_copy = dict(kwargs)
kwargs_copy.update(end='', flush=False)
print(f'{next(c)})', **kwargs_copy)
print(*args, **kwargs)
return eprint
eprint = make_eprint()
Такой код не подходит, так как не соблюдается требования отдать три символа под число (да и эти числа должны выравниваться по левому краю). Есть какие-то советы?
Ответы (1 шт):
Автор решения: Сергей Островский
→ Ссылка
Что такое cols[4]?
Лучше вынести в отдельные константы, так более читабельно.
Пример:
name = cols[4]
age = cols[3]
Для нумерации возможно подойдет enumerate
values = ['Элемент_1', 'Элемент_2']
for count, value in enumerate(values, start=1):
print(count, value)
С ним мы бежим по списку и одновременно считаем итерации, которые хранятся в count
rows = open('IMDbnames_f.csv', encoding="utf8").read().split("\n")
for count, r in enumerate(rows, start=1):
cols = r.split("#")
if cols[2] != '' and int(cols[2])> 200 and cols[4] == '':
print(count,')', '{:.>40}'.format(cols[1]))
