《python基础教程》里有一段字符串格式化示例: # coding=utf-8 # 使用指定的宽度打印格式化后的价格列表 width = input('Please enter with: ') price_width = 10 item_width = width - price_width header_format = '
《python基础教程》里有一段字符串格式化示例:
# coding=utf-8# 使用指定的宽度打印格式化后的价格列表
width = input('Please enter with: ')
price_width = 10
item_width = width - price_width
header_format = '%-*s%*s'
format = '%-*s%*.2f'
print '=' * width
print header_format % (item_width, 'Item', price_width, 'Price')
print '-'*width
print format % (item_width, 'Apples', price_width, 0.4)
print format % (item_width, 'Pears', price_width, 0.5)
print format % (item_width, 'Cantaloupes', price_width, 1.92)
print format % (item_width, 'Dried Apricots (16 oz.)', price_width, 8)
print format % (item_width, 'Prunes (4 lbs)', price_width, 12)
print '=' * width
运行效果如下:
Please enter with: 35===================================
Item Price
-----------------------------------
Apples 0.40
Pears 0.50
Cantaloupes 1.92
Dried Apricots (16 oz.) 8.00
Prunes (4 lbs) 12.00
===================================
Process finished with exit code 0
有几点值得考虑:
1. 用*作为字符的宽度(或精度),它的值从元组中读取;
2. header_format的格式'%-25s%10s',-代表左对齐,那么Item字段所占的宽度为25并且左对齐,Price字段所占宽度为10并且右对齐;
3. format的格式为'%-25s%10.2f',比如‘Apples’字段所占的宽度为25并且左对齐,'0.4'字段所占宽度为10并且右对齐,并且字段精度为2,即保留小数点后两位。