使用format其实是调用字符串的一个方法,使用占位符输出,也可以使用字典进行对应的位置替换,占位符和字典键值可以混用,如,STR={1},{flag}
STR.fotmat("frist",flag="Value")
print(STR)
>first,Vlaue
format格式化输出,摘录自python 学习手册微信读书
在指定某个元素之后,如{1}可以在后面对应的加上格式化的输出{1:>10}表示右对齐占用10个字符,这种格式指定可以兼容%的方式
另一种和%表达式类似的是,可以在格式化字符串中添加额外的语法来实现更具体的层级。对于格式化方法,我们在替换目标的标识之后使用一个冒号,后面跟着可以指定字段大小、对齐方式和一个特定类型编码的格式化声明。如下是可以在一个格式字符串中作为替代目标出现的形式化结构:
{fieldname!conversionflag:formatspec}
在这个替代目标语法中:
•fieldname是指定参数的一个数字或关键字,后面跟着可选的“.name”或“[index]”成分引用。
•Conversionflag可以是r、s,或者a分别是在该值上对repr、str或ascii内置函数的一次调用。
•Formatspec指定了如何表示该值,包括字段宽度、对齐方式、补零、小数点精度等细节,并且以一个可选的数据类型编码结束。
冒号后的formatspec组成形式上的描述如下(方括号表示可选的组成,并且不能编写为常量):
[[fill]align][sign][#][0][width][.precision][typecode]
align可能是<、>、=或^,分别表示左对齐、右对齐、一个标记字符后的补充或居中对齐。Formatspec也包含嵌套的、只带有{}的格式化字符串,它从参数列表动态地获取值(和格式化表达式中的*很相似)。
参见Python的库手册可以了解关于替换语法的更多信息和可用的类型编码的列表,它们几乎与前面表7-4中列出的以及%表达式中使用的那些完全重合,但是格式化方法还允许一个“b”类型编码用来以二进制格式显示整数(它等同于使用bin内置函数),允许一个“%”类型编码来显示百分比,并且使用唯一的“d”表示十进制的整数(而不是“i”或“u”)。
例如,下面的{0:10}意味着一个10字符宽的字段中的第一个位置参数,{1:<10}意味着第2个位置参数在一个10字符宽度字段中左对齐,{0.platform:>10}意味着第一个参数的platform属性在10字符宽度的字段中右对齐:
>>> '{0:10} = {1:10}'.format('spam',123.4567)'spam = 123.457'>>> '{0:>10} = {1:<10}'.format('spam',123.4567)' spam = 123.457 '>>> '{0.platform:>10} = {1[item]:<10}'.format(sys,dict(item='laptop'))' win32 = laptop '
在格式化方法调用中,浮点数支持与%表达式中相同的类型代码和格式化声明。例如,下面的{2:g}表示,第三个参数默认地根据“g”浮点数表示格式化,{1:.2f}指定了带有2个小数位的“f”浮点数格式,{2:06.2f}添加一个6字符宽度的字段并且在左边补充0:
>>> '{0:e},{1:.3e},{2:g}'.format(3.14159,3.14159,3.14159)'3.141590e+00,3.142e+00,3.14159'>>> '{0:f},{1:.2f},{2:06.2f}'.format(3.14159,3.14159,3.14159)'3.141590,3.14,003.14'
格式化方法也支持十六进制、八进制和二进制格式。实际上,字符串格式化是把整数格式化为指定的进制的某些内置函数的替代方法:
>>> '{0:X},{1:o},{2:b}'.format(255,255,255) # Hex,octal,binary'FF,377,11111111'>>> bin(255),int('11111111',2),0b11111111 # Other to/from binary('0b11111111',255,255)>>> hex(255),int('FF',16),0xFF # Other to/from hex('0xff',255,255)>>> oct(255),int('377',8),0o377,0377 # Other to/from octal('0377',255,255,255) # 0377 works in 2.6,not 3.0!
格式化参数可以在格式化字符串中硬编码,或者通过嵌套的格式化语法从参数列表动态地获取,后者很像是格式化表达式中的