2013-06-24 2 views
22

В Fortran, я могу повторить формат дескриптора, чтобы сохранить переписывания его много раз, например:Могу ли я повторить дескриптор строкового формата в python?

write(*,'(i5,i5,i5,i5,i5)')a,b,c,d,e 

можно переписать в виде

write(*,'(5(i5))')a,b,c,d,e 

Может подобный подход используется в Python?

Например, сказать, что я хотел сделать то же самое в Python, я бы написать:

print "{0:5d} {1:5d} {2:5d} {3:5d} {4:5d}".format(a,b,c,d,e) 

Есть ли какой-нибудь способ повторить дескриптор формата, как в Fortran?

+4

В питона вы можете выполнять операции умножения на струнах, так что если вы были для печати 5 * «строка», она будет печатать строку 5 раз. –

ответ

19

Вы можете повторить строку форматирования сам:

print ('{:5d} '*5).format(*values) 

форматной строкой является обычной строкой, так что вы можете multiply it by int

>>> '{:5d} '*5 
'{:5d} {:5d} {:5d} {:5d} {:5d} ' 
+1

Спасибо. Для справок в будущем: это работает при использовании синтаксиса выражения форматирования: 'print ((«% 6.2f »* 3 +«% 7.2f »* 2)% (* values))' - отметить скобки вокруг строки формата при добавлении нескольких групп разной длины. – AstroFloyd

+0

В Python 3.6.1 'print ('{: 5d}' * 5) .format (1,2,3,4,5)' дает ошибку атрибута. 'print ('{: 5d}' * 5.format (1,2,3,4,5))' дает синтаксическую ошибку. Однако 'fmt = '{: 5d}' * 5', а затем' print (fmt.format (1,2,3,4,5)) 'печатает по желанию. –

Смежные вопросы