2012-05-31 4 views
35

Я хочу создать форматированную строку с фиксированным размером с фиксированным положением между полями. Пример объясняет лучше, здесь явно 3 различных областей, а также строка имеет фиксированный размер:Как создать строку с фиксированным размером в python?

XXX  123 98.00 
YYYYY  3 1.00 
ZZ   42 123.34 

Как я могу применить такое форматирование строки в Python (2.7)?

ответ

80

Несомненно, используйте метод .format. НАПРИМЕР,

print '{:10s} {:3d}  {:7.2f}'.format('xxx', 123, 98) 
print '{:10s} {:3d}  {:7.2f}'.format('yyyy', 3, 1.0) 
print '{:10s} {:3d}  {:7.2f}'.format('zz', 42, 123.34) 

напечатает

xxx  123 98.00 
yyyy   3  1.00 
zz   42 123.34 

Вы можете настроить размеры поля по желанию. Обратите внимание, что .format работает независимо от print для форматирования строки. Я просто использовал печать для отображения строк. Краткое объяснение:

10s формат строка с 10 пробелов, выравнивание по левому краю, по умолчанию

3d формате целое резервирование 3 пространства, выравнивать по правому краю по умолчанию

7.2f формате с плавающей точкой, оставляя за собой 7 пространства, 2 после десятичной точки, справа по умолчанию.

Существует множество дополнительных опций для ввода/форматирования строк (отступы, выравнивание влево/вправо и т. Д.), String Formatting Operations предоставит дополнительную информацию.

+2

Точно, что я искал, спасибо! – anio

+4

Примечание: '7.2f' обеспечивает точность 2, но 7 - это только ширина _minimum_. Для входов, которые не соответствуют форматам, вы не можете получить ширину 7. Например. хотя 12345.7 составляет всего 7 символов, '' {: 7.2f} '. format (12345.7) 'имеет ширину 8. – jkmacc

+0

@jkmacc хорошая точка, спасибо за явное указание этого (ссылка содержит дополнительную информацию об этом и многое другое , а также справа вверху № 4, но это более явное/простое :) – Levon

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