Python学习笔记六·字符串的格式化

2018-04-25  本文已影响0人  ReiChin_

在Python中我们采用format % value的方式格式化字符串。格式化操作符%的左边是要被格式化的字符串,右边需要的操作数。format中我们可以使用%s%d%f等转换说明符来说明想要得到什么样的转换结果,当value有多个值时,最好用()将其包裹在一起。
基本转换说明符由下面的4个部分组成。

转换类型 含义
d,i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示的浮点数(小写)
E 科学计数法表示的浮点数(大写)
f,F 十进制浮点数
C 单字符(接受整数或者单字符字符串)
r 字符串(使用repr转换任意Python对象)
s 字符串(使用str转换任意Python对象)

接下来我们具体的探讨转换说明符的使用。

一、简单用法

print "小明的身高:%dcm" % 180
print "10的八进制:%o" % 10
print "10的十六进制:%X" % 10
import math
print "π:%f" % math.pi
print "用str格式化:%s" % 55L 
print "用repr格式化:%r" % 55L
image.png

二、宽度和精度

print "%.5s" % 'Hello Python!' #  取字符串的前5个字符
import math
print "π:%.2f" % math.pi # 保留2位小数
print "π:%010f" % math.pi # 长度为10位,不够用0填充
print "π:%010.2f" % math.pi # 长度为10位,保留2为小数,长度不够用0填充
image.png
总长度和精度也可以用*表示,此时的数据从元组中读取。
print "%.*s" % (5, 'Hello Python!') #  取字符串的前5个字符
import math
print 'π:%+0*.*f' % (10, 2, math.pi) # 长度为10位,保留2为小数,长度不够用0填充,加正负号
image.png

三、映射变量

在字符串中我们可以使用%(key)的形式,来映射字典中的value

user_dict = {'name' : '张三', 'num' : 666}
message = '%(name)s,欢迎您!您是我们的第%(num)d位用户。'
print message  % user_dict
image.png

四、实战·打印超市购物小票

width = 46 # 总宽度
price_width = 12 # 单价宽度
count_width = 12 # 数量宽度
subtotal_width = 6 # 小计宽度

item_width = width - price_width - count_width - subtotal_width

header_format = '%-*s%-*s%-*s%*s' # 表头
item_format = '%-*s%-*.2f%-*s%*.2f' # 内容
total_format = '%-*s%*.2f' # 合计

print '=' * width
print header_format % (item_width, '名称', price_width, '单价', count_width, '数量', subtotal_width, '小计')
print '-' * width
print item_format % (item_width, '苹果', price_width, 8.88, count_width, 2, subtotal_width, 8.88 * 2)
print item_format % (item_width, '鸡蛋', price_width, 10.56, count_width, 1.76, subtotal_width, 10.56 * 1.76)
print item_format % (item_width, '牙膏', price_width, 15.9, count_width, 1, subtotal_width, 15.9 * 1)
print '-' * width
print total_format % (width - subtotal_width, '合计:', subtotal_width, 52.25)
print '=' * width
image.png
上一篇下一篇

猜你喜欢

热点阅读