Как пронумеровать выводимые данные с помощью 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]))
→ Ссылка