格式化是对字符串进行一定的格式显示或输出的方式
在Python中有着丰富的格式化方式,可以很方便的输出任何你想要的文本样式。比如 format() 方法、 % 形式等,还可以设置输出长度、左右内容、是否居中等,下面就一一介绍下。
如下示例直接从IDLE中测试、或命令行进入Python均可。
format
()
方法格式化Python中,字符串的format()
方法可以实现内容的格式化,字符串中使用以0开始的占位符,它会用传入的参数依次替换字符串内对应的占位符{0}
、{1}
...
占位符中使用数字指定对应format参数中的第几个参数;不使用数字时则第几个占位符对应第几个format参数。
如下,字符串中第一个占位符保持原样输出,第二个占位符保留两位小数:
>>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.125)
'今年Python使用率提高了7.12%'
>>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.126)
'今年Python使用率提高了7.13%'
>>> '今年{0}使用率提高了{1:.2f}%,{0}很受欢迎'.format('Python', 7.125)
'今年Python使用率提高了7.12%,Python很受欢迎'
复制代码
占位符
{}
也被称为槽。
关于浮点数舍入的规则: 由上面还可以看出,Python中保留小数位数时,并不是四舍五入,也不是大多数编程软件使用的“银行家舍入” —— 四舍六入五取偶(4舍6入5凑偶,四舍六入五成双)。
查看如下示例,这个舍入很有些难理解:
>>> '{:.2f}'.format(7.1251) '7.13' >>> '{:.2f}'.format(7.1259) '7.13' >>> '{:.2f}'.format(7.1250) '7.12' >>> '{:.2f}'.format(7.125) '7.12' >>> '{:.2f}'.format(7.1150) '7.12' >>> '{:.2f}'.format(7.115) '7.12' >>> # 到目前还是类似银行家舍入,但是,如下,换成 7.025 >>> '{:.2f}'.format(7.025) '7.03' >>> '{:.3f}'.format(3.1425) '3.143' 复制代码
格式化时浮点数舍入的规则是和
round(number[, ndigits])
函数的舍入规则一样的:>>> round(7.025,2) 7.03 >>> round(7.125,2) 7.12 >>> round(7.1250,2) 7.12 >>> round(7.1251,2) 7.13 >>> round(3.1425,3) 3.143 复制代码
具体规则,可参考官方文档:docs.python.org/zh-cn/3/lib…
python中要想精确的计算或舍入,推荐使用decimal模块(库)。
在槽中,可以通过指定:
实现一些对格式输出的控制。
控制格式的详细设置为::<填充><对齐><宽度><,><.精度><类型>
:
—— 引导符号。表示后面是格式控制<填充>
—— 用于填充的单个字符,默认为空格。会在槽对应的原字符串的基础上填充该字符。<对齐>
—— <
表示 左对齐; >
表示 右对齐; ^
——表示 居中对齐。默认为左对齐。<宽度>
—— 槽设定的输出宽度。即该槽的位置输出的字符的宽度,如果宽度不够,则使用 <填充>
字符补满。<,>
—— 数字的千位分隔符,用于多余三位长度的数字时的千位分割。<.精度>
—— 浮点数小数精度或字符串最大输出长度。<类型>
—— 整数类型:b, c, d, o, x, X 分别对应 二进制、字符[Unicode编码的字符]、十进制、8进制、16进制、大写16进制; 浮点数类型:e, E, f, % 分别对应 小写e科学计数法、大写E科学计数法、浮点数、百分比(会自动显示该小数除以100后的百分比值)。如下,格式化使用 =
填充,参数字符串居中,总长度为20的字符串:
>>> "{0:=^20}".format("PYTHON") # 输出字符串格式为用=填充且居中总长度为20
'=======PYTHON======='
复制代码
格式化使用 *
填充,参数字符串右对齐,总长度为20的字符串:
>>> "{0:*>20}".format("BIT") # 输出长度为20字符右对齐其他位置*填充
'*****************BIT'
复制代码
格式化使用默认
填充,参数字符串左对齐,总长度为10的字符串:
>>> "{:10}".format("BIT") # 默认输出长度为10时左对齐填充空格
'BIT '
复制代码
格式化使用千位分隔符为 ,
,保留3位小数:
>>> "{0:,.3f}".format(12345.6789) # 千分位,分割,保留3位小数
'12,345.679'
复制代码
字符串最长输出三位:
>>> "{0:.3}".format("abcdef") # 输出字符串最长三位
'abc'
复制代码
输出一个整数的二进制、对应字符、十进制、8进制、16进制、大写16进制形式:
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(125) # 输出125的二进制、字符、十进制、8进制、16进制、大写16进制表示
'1111101,},125,175,7d,7D'
复制代码
输出一个浮点数的科学计数法、浮点数、百分比:
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14) # 输出3.14的小写e科学计数法、大写E科学计数法、浮点数、百分比格式
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
复制代码
%
实现格式化% 符号也可以实现字符串的格式化。
在字符串内部%
表示特定格式字符串的占位,字符串右侧通过%连接要格式化的参数,它们和内部占位符%一一对应。
在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序一一对应。
如下:
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> '你好, %s, 一共消费 %d 元' % ('小明', 1000000)
'你好, 小明, 一共消费 1000000 元'
复制代码
常用占位符有:
%d
整数%f
浮点数%s
字符串%x
十六进制整数字符串内只有一个%?
时,% 后的括号可以省略。
格式化整数和浮点数时,指定输出整数或小数的位数,和是否补0
>>> '%2d-%03d' % (3, 1)
' 3-001'
>>> '%.3f' % 3.1415926
'3.142'
>>> '%.010f' % 3.1415926
'3.1415926000'
复制代码
用%%
转义来表示一个%
>>> '增长率是%d%%'%(10)
'增长率是10%'
复制代码
通过在字符串前加r
可以实现输出原始字符串,即不进行字符串的转义。
>>> print(r'\r\n\\')
\r\n\\
>>> print('\r\n\\')
\
复制代码
如下对中文指定u编码示例:
>>> u'你好'
'你好'
复制代码
Python3中,字符串默认就是以Unicode编码的。
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)