建议对%使用format()方法字符串操作,官方给出这种格式化操作已经过时,可能会在未来的Python版本中消失。在新代码中使用新的字符串格式。因此,推荐大家使用format()来代替%.format方法系统对复杂变量的替换和格式化能力,下面就来看看都有哪些用法吧。format()方法是string模块的Formatter类中的一个方法,是一个内置方法。因此,可以在属于字符串对象的任何类别中调用此方法。语法结构这个方法太强大了,官方用户就是。replacement_field::="{"[field_name]["!"转换][":"format_spec]"}"field_name::=arg_name("."attribute_name|"["element_index"]")*arg_name::=[标识符|integer]attribute_name::=identifierelement_index::=integer|index_stringindex_string::=<除“]”之外的任何源字符>+conversion::=“r”|“s”|"a"format_spec::=<下一节描述>format_spec的用法如下format_spec::=[[fill]align][sign][#][0][width][,][.precision][type]fill::=align::="<"|“>”|“=”|"^"符号::="+"|“-”|""宽度::=整数精度::=整数类型::="b"|“c”|“d”|“电子”|“E”|“f”|“F”|“克”|“G”|“n”|“哦”|“s”|“x”|“X”|"%"解释:forcefieldtoberightalignedwithinavailablespace=paddingaftersign(ifany)butbeforenumber^forcefieldtobewithinavailablespace中常用的方法中心如下。format()方法中的槽中除了参数序号外,还可以包含格式控制信息。此时槽的内部样式如下:{<参数号>:<格式控制标签>}"{"[identifier|整数*][”!”“r”|“s”|"a"][":"format_spec]"}"其中,用于控制参数显示的格式,包括:,<.precision>6个字段,这些字段是可选的,可以组合使用,下面一一介绍。常用表达式指定位置>>>'{0},{1},{2}'.format('a','b','c')'a,b,c'>>>'{},{},{}'.format('a','b','c')#3.1+仅'a,b,c'>>>'{2},{1},{0}'.format('a','b','c')'c,b,a'>>>'{2},{1},{0}'.format(*'abc')#解包参数序列'c,b,a'>>>'{0}{1}{0}'.format('abra','cad')#arguments'indexescanberepeated'abracadabra'ifyouwanttodisplay{}>>>'{{}},{},{}'.format('b','c')'{},b,c'指定名称>>>'坐标:{纬度},{经度}'.format(latitude='37.24N',longitude='-115.81W')'坐标:37.24N,-115.81W'>>>coord={'latitude':'37.24N','longitude':'-115.81W'}>>>'Coordinates:{latitude},{longitude}'.format(**coord)'Coordinates:37.24N,-115.81W'指定复数有2个属性。如果不知道属性的具体名称是什么,可以使用dir查看。>>>c=3-5j>>>dir(c)[......'imag','real']>>>('复数{0}由实部{0构成.real}'...'和虚部{0.imag}.').format(c)'复数(3-5j)由实部3.0和虚部-5.0组成。'>>>类点:...def__init__(self,x,y):...self。x,自我。y=x,y...def__str__(self):...return'Point({self.x},{self.y})'.format(self=self)...>>>str(Point(4,2))'Point(4,2)'获取数组>>>coord=(3,5)>>>'X:{0[0]};Y:{0[1]}'.format(coord)'X:3;Y:5'!s差异!r>>>"repr()显示引号:{!r};str()不:{!s}".format('test1','test2')"repr()显示引号:'test1';str()不't:test2"文本居中下方的文本对齐和左对齐>>>'{:<30}'.format('左对齐')'左对齐'>>>'{:>30}'.format('右对齐')'右对齐'>>>'{:^30}'.format('居中')'centered'>>>'{:*^30}'.format('centered')#使用'*'作为填充字符'**********centered*********'指定类型b:输出整数的二进制格式;c:输出整数的Unicode字符;d:输出整数的十进制格式;o:输出整数的八进制格式;x:小写十六进制格式,用于输出整数十六进制格式;X:用于输出整数的大写十六进制格式;>>>'{:+f};{:+f}'.format(3.14,-3.14)#始终显示'+3.140000;-3.140000'>>>'{:f};{:f}'.format(3.14,-3.14)#显示正数的空格'3.140000;-3.140000'>>>'{:-f};{:-f}'.format(3.14,-3.14)#只显示减号--与'{:f}相同;{:f}''3.140000;-3.140000'逗号作为千位分隔符:>>>'{:,}'.format(1234567890)'1,234,567,890'表示百分比>>>points=19>>>total=22>>>'Correctanswers:{:.2%}.'.format(points/total)'正确答案:86.36%'具体格式如日期>>>importdatetime>>>d=datetime.datetime(2010,7,4,12,15,58)>>>'{:%Y-%m-%d%H:%M:%S}'.format(d)'2010-07-0412:15:58'骚操作可以输出表格,有点类似于三方库prettytable的效果>>>width=5>>>fornuminrange(5,12):...forbasein'dXob':#10/16/8/2baserespectively...print('{0:{width}{base}}'.format(num,base=base,width=width),end='')...print()...555101666110777111881010009911100110A12101011B131011高级用法——模板字符串如果你是看Python语言工具源码的人,你会发现这样的用法——模板字符串,比如在__init__.py中就有这样一个机器人使用先看例子fromstringimportTemplateerrorMessageTemplate=Template("""$reasonRIDEdependsonwx(wxPython).....""")....print(errorMessageTemplate.substitute(reason="wxPythonnotfound."))如果有问题,它会打印wxPythonnotfound。RIDE依赖于wx(wxPython)。.....首先导入模板Template,看看里面都有哪些属性>>>fromstringimportTemplateast>>>dir(t)[.....'braceidpattern','delimiter','flags','idpattern','pattern','safe_substitute','substitute']>>>s=Template('$wholikes$what')>>>s.substitute(who='tim',what='kungpao')'timlikeskungpao'>>>d=dict(who='tim')>>>Template('Give$who$100').substitute(d)Traceback(mostrecentcalllast):[...]ValueError:字符串中的占位符无效:第1行,第10列>>>模板('$wholikes$what').substitute(d)Traceback(最近一次调用):[...]KeyError:'what'>>>Template('$wholikes$what').safe_substitute(d)'timlikes$what'相关阅读https://stackoverflow.com/que...https://www.python.org/dev/pe...https://blog.csdn.net/i_chaor...https://docs.python.org/relea...https:///docs.python.org/relea...看完之后,你是不是已经对格式有了深刻的认识呢?赶快练习吧。嗨,Sup,如果觉得我的文不错,不妨帮个忙1.可以关注我的公众号《程序员聚集地》,每天分享互联网前沿技术,让你的琐碎时间不会无聊。听说你关注人越来越好了。2.给我点个赞,让更多人看到这篇文章,顺便鼓励一下,嘻嘻。