美文网首页
Python学习笔记六·字符串的格式化

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

作者: ReiChin_ | 来源:发表于2018-04-25 08:45 被阅读0次

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

    • %字符(必须):标记转换说明符的开始。
    • 转换标识(可选):-表示左对齐,+表示在转换值之前要加上正负号,空白字符表示正数之前保留空格,0表示转换值若位数不够则用0填充。
    • 最小字段宽度(可选):转换后的字符串至少应具有该值指定的宽度。如果是*则在元组中读取。
    • 精度(可选):放在(.)后。如果转换的是实数,精度值就表示出现在小数点后的位数,如果转换的是字符串,则表示最大字段宽度。如果是*则在元组中读取。
    • 转换类型(必须):参照下表。
    转换类型 含义
    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

    相关文章

      网友评论

          本文标题:Python学习笔记六·字符串的格式化

          本文链接:https://www.haomeiwen.com/subject/jwdzkftx.html