Python

Python字符串格式化函数format()

勤劳的小蜜蜂 · 1月23日 · 2019年 · ·

format()简介

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),增强了字符串格式化的功能。

基本使用格式是:<模板字符串>.format(<逗号分隔的参数>)

>>> "这是{}网站,它是{}网站".format("www.beeij.com","技术教程")
'这是www.beeij.com网站,它是技术教程网站'
>>> "这是{1}网站,它是{0}网站".format("www.beeij.com","技术教程")
'这是技术教程网站,它是www.beeij.com网站'

位置参数可以不指定,默认从0开始计数。

常见的设置传值方法

参数名传值

>>> "这是{site}网站,它是{type}网站".format(site="www.beeij.com",type="技术教程")
'这是www.beeij.com网站,它是技术教程网站'

列表传值

>>> info=["www.beeij.com","技术教程"]
>>> "这是{0[0]}网站,它是{0[1]}网站".format(info)
'这是www.beeij.com网站,它是技术教程网站'

字典传值

>>> info={"site":"www.beeij.com","type":"技术教程"}
>>> "这是{site}网站,它是{type}网站".format(**info)
'这是www.beeij.com网站,它是技术教程网站'

在函数调用中 ,**修饰的传递的参数会被当作字典以key=value的形式展开,以上例子中展开为site=”www.beeij.com”,type=”技术教程”,展开后和参数名传值一样。

对象传值

>>> class Info:
	def __init__(self,site,type):
		self.site=site
		self.type=type

>>> bee=Info("www.beeij.com","技术教程")
>>> "这是{0.site}网站,它是{0.type}网站".format(bee)
'这是www.beeij.com网站,它是技术教程网站'
  • self代表类的实例
  • self是约定俗成的习惯,当然可以换成其他的例如this
  • self可以不写,不写self该方法则变成类方法,可以直接使用 类名.方法() 调用
>>> class Info:
	def __init__(site):
		print(site)

		
>>> Info.__init__("beeij")
beeij

格式控制参数

:<填充><对齐><宽度><,><.精度><类型>
用于填充的单个字符< 左对齐
> 右对齐
^ 居中对齐
槽设定的输出宽度数字的千位分隔符浮点数小数精度

字符串最大输出长度
整数类型
b, c, d, o, x, X
浮点数类型
e, E, f, %

<填充>

指定<宽度>内除了参数外的字符采用<填充>表示,默认是空格。

>>> "{:^20}".format("beeij")   #默认为空格填充
'       beeij        '

>>> "{:=^20}".format("beeij")  #设置"="填充
'=======beeij========'

<对齐>

参数在指定<宽度>内输出时的对齐方式,使用<、>和^分别表示左对齐、右对齐和居中对齐。

>>> "{:=<20}".format("beeij")   #左对齐
'beeij==============='

>>> "{:=>20}".format("beeij")   #右对齐
'===============beeij'

>>> "{:=^20}".format("beeij")   #居中对齐
'=======beeij========'

<宽度>

指当前槽输出字符宽度。

如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。

如果该 槽对应的format()参数长度比<宽度>设定值小,则位数将被默认以空格字符补充。

>>> "{:2}".format("beeij")     #参数长度比<宽度>设定值大
'beeij'

>>> "{:20}".format("beeij")    #参数长度比<宽度>设定值小
'beeij               '

<,>

用于显示数字的千位分隔符。

>>> "{}".format(1234)
'1234'

>>> "{:,}".format(1234)
'1,234'
>>> 

<.精度>

对于整数来说,表示整数部分的位数。

对于浮点数来说,表示小数部分的有效位数。

对于字符串来说,表示输出的最大长度。

>>> "{:.2}".format(1234.4567)     #整数
'1.2e+03'

>>> "{:.2f}".format(1234.4567)    #浮点数
'1234.46'

>>> "{:.3}".format("beeij")       #字符串
'bee'

<类型>

对于整数来说,可用以下6种字符控制输出:

  • b:输出整数的二进制方式
  • c:输出整数对应的 Unicode 字符
  • d:输出整数的十进制方式
  • o:输出整数的八进制方式
  • x:输出整数的十六进制方式(其中字母为小写)
  • X:输出整数的十六进制方式(其中字母为大写)
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(200)
'11001000,È,200,310,c8,C8'

对于浮点数来说,可用以下4种字符控制输出:

  • e:输出浮点数对应的小写字母
  • E:输出浮点数对应的大写字母 E 的指数形式
  • f:输出浮点数的标准浮点形式
  • %:输出浮点数的百分形式
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
0 条回应