python基础学习之简化占位符和格式化的概念

时间:2022-11-02 13:11:10
  • 简化版占位符有哪些?

    %s   字符串占位符,代表该位置有一个字符串待替换(万能)

    %d   数字占位符,代表该位置有一个数字待替换

    %f    同上,这里是浮点数,float【默认保留6位小数】

    %c    这里是ASCII码

    %o    这里是8进制

    %x     这里是16进制

    %e     这里是科学计数法(什么玩意儿)

    %.nf   这是浮点数(小数)保留小数点后n位【四舍五入】,如果长度不够,后面不断+0,从而达到要求

  • %nf    这里是试浮点数字符总长度为n,不足的话用空格填充,字符靠右,n为负数,则字符靠左;如果字符长度超过n,则无视改效果,视作‘%f’

  • 使用方法:

    '%s'%1.366666666

    即在字符串中出现占位符后,引号后用%跟上需要格式化(填充?替代?)的内容。

  • 举个栗子:

    s = '我是个%s'%'帅哥'

    print(s)

  • 字符串的时候已经提到,.format()是字符串格式化的功能,是一个常用的功能,其功能比较强大。(所谓格式化,我个人认为就是填充或者替换占位符)

    上述简化占位符功能可以理解如下:

    '{:.2f}'.format(12.333)         保留小数点后两位

    '{a:.2f}'.format(a=12.333)

    '{:.2%}'.format(0.333)         百分比格式

    '{:x}'.format(20)                转换成十六进制

    '{:o}'.format(20)                转换成八进制

    ......

  • format的常态用法:

  • tpl='i am {},age{}'.format('疏楼龙宿',18)

    按照顺序将字符串和数字挨个填充入{}内,可以视作将按照位置,一一对应填充。

  • tpl='i am {0},age{1}'.format('疏楼龙宿',18,22,55)

    这里可以视作将('疏楼龙宿',18,22,55)处理成某个有序对象(元组或者列表,我也不知道到底是啥,就这么理解),{}内数字视作索引,然后按照索引对应填充。如果{}内的值超过()处理后有序对象的索引长度,则报错;与参数的顺序位置无关。

  • tpl='i am {a},age{b}'.format('a'='疏楼龙宿','b'=18)

    这里是个Key和Value值对应填充的关系,顺序就无所谓了

  • tpl='i am {0[0]},age{0[1]}'.format(['疏楼龙宿',18])

    这里是丢进去一个列表,然后{}内是个索引取值对应问题,就是将['疏楼龙宿',18]这个列表处理成某个有序对象,例如(['疏楼龙宿',18]),其中只有一个元素['疏楼龙宿',18],所以索引是0,根据0[0]和0[1]取值填充,同理,这里['疏楼龙宿',18]换成元组也一样。与顺序无关

  • tpl='i am {},age{}'.format(*['疏楼龙宿',18])

    直接丢入一个列表的话,需要加上*号,系统会自动遍历该列表内可迭代元素然后按照位置对应关系填充;如果{}内有数字,系统会将数字视作索引标,按照索引标依次填入

  • tpl='i am {a},age{b}'.format(**{'a' = '疏楼龙宿','b' = 18})

    直接丢入字典的话,需要加**来使系统识别,同样是迭代其中可迭代对象,即将key拿出来到字符串中寻找,然后按照key值对应方法填充。

  • 特别情况,混合版

    s1 = '{},{},{},{}'

    a = 'qwe'

    b = 'tryry'

    c = 000001

    s = '{},{y},{z}'.format(a,z=b,y=c)

    输出后:qwe,111,tryry

    总结:位置格式化要在key值格式化的左边,否则报错,即位置格式化优先,key值格式化往后排

  • 左对齐,右对齐,居中版本

  • 格式化某个占位符,需要制定字符串长度和内容偏左偏右居中

  • '{a:<10}'.format(a = 1),创造一个10个字符长度的字符串,将1靠左防止,填充占位符。10是指创造的字符串总长度,如果不够则空白填充,<代表空格在右侧,a的值放置于字符串的左侧

  • '{a:>10}'.format(a = 1),创造一个10个字符长度的字符串,将1靠右防止,填充占位符。10是指创造的字符串总长度,如果不够则空白填充,>代表空格在左侧,a的值放置于字符串的右侧

  • '{a:^10}'.format(a = 1),这个同上道理,就是居中了,【中间符号的尖在哪儿,字符就在哪儿】

  • 如果要用东西填充空白呢?

    这样:

    '{a:x^10}'.format(a = 1):冒号后面,^、<、>三个符号前面加个要用于填充的玩意儿

  • 如果上述a的长度本身超过10,则直接格式化字符,没有空格,所以x也被无视了。