pyho字符串格式化,pyho字符串格式化的问题( 二 )


上面说的只是格式标记的最简间的形式,来看复杂一点的:
‘%6.2f’ % 1.235
在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位 。还有更复杂的:
‘%06.2f’ % 1.235
在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位 。这一行的输出为‘001.24’,可以看到小数也占用一位 。类似于这里0这样的标记还有-、+ 。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的 。最后来看最复杂的形式:
‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}
这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键 。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二 。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定 。这行代码的输出为:'newsim:0009.5' 。
有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f 。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值 。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345 。
这是这本书到此为止看起来最复杂的内容 。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串 。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号 。
象C 中的sprintf函数一样,可以用“%”来格式化字符串
Table 3.1. 字符串格式化代码
格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
python 为什么要格式化字符串

pyho字符串格式化,pyho字符串格式化的问题

文章插图
在python中也有类似于c中的printf()的格式输出标记 。在python中格式化输出字符串使用的是%运算符,通用的形式为格式标记字符串 % 要输出的值组
其中,左边部分的”格式标记字符串“可以完全和c中的一致 。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开 。