Что означает «»{: 0>2d}». формат(количество) » в следующем коде?

#python

Вопрос:

Я наткнулся на этот код…

 def coordinate(my_list):
    coordinate = []     
    count = -1
    for num in my_list:
         count  = 1
         coordinate.append("%s-%s" % ("{:0>2d}".format(count), my_list[count]))
    return coordinate       

print ( coordinate(['x','y','z']))
 

ожидаемый тип вывода —

 coordinate(['A', 'B', 'C', 'D'])
>>>['00-A', '01-B', '02-C', '03-D']
 

Теперь мой вопрос в том, что я не понимаю

 coordinate.append("%s-%s" % ("{:0>2d}".format(count), my_list[count]))
 

эта часть кода… Для чего именно "{:0>2d}" и .format(count) используется? Как они работают? Пожалуйста, объясните.

Комментарии:

1. Один из них-это струна. Другой — это метод, который работает со строкой. И то, и другое задокументировано в документации.

2. docs.python.org/3/library/string.html#formatstrings

Ответ №1:

Это str.format функция.

В строке формата "{:0>2d}" :

d означает ожидание int:

 >>> "{:d}".format(3)
'3'
 

2d означает форматирование до 2 символов с использованием отступов (по умолчанию пробел)

 >>> "{:2d}".format(3)
' 3'
 

0> означает использование 0 в качестве дополнения и правильную настройку результата:

 >>> "{:0>2d}".format(3)
'03'
 

Комментарии:

1. Это > здесь излишне , потому 02d что уже было бы выровнено по правому краю. Было бы по-другому, если бы была выбрана большая ширина поля, хотя бы потому 02d , что фактически это то же самое 0=2d , что означает, что 0 заполнение помещается между знаком и значением, в то время 0>2d как заполнение помещается перед знаком. Но при ширине поля 2 даже однозначное отрицательное значение уже занимает 2 символа. Попробуйте -42 и 0>5d затем сравните это с 05d или 0=5d ..