Python格式化字符串

本文参考了燕双嘤的博文Python:格式化字符串,对部分内容做了修改和扩充,在案例上做了详细说明注释。

 

一,使用%操作符

"%[-][+][0][m][.n]格式化字符"%exp

格式字符说明格式字符说明
%s字符串(采用str()显示)%r字符串
%c单个字符%o八进制数
%d或者%i十进制数%e指数(基底为e)
%x十六进制数%E指数(基底为E)
%f或者%F浮点数%%字符

 

例如:

x = 123
s = "%s" % x
print(s)    # 123
print(type(s))    # <class 'str'>

x = 123
s = "%s , %o" % (x , x+1)
print(s)    # 123 , 174

二,使用format()方法

"{[index][:[[fill]align][sign][#][width][.precision][type]]}" 

[:[[fill]align][sign][#][width][.precision][type]]称为格式化说明(format-spec),以冒号开头,有六部分可选内容组成。是使用format进行字符串格式化的重要组成部分。

index

可选参数,用于指定要设置格式的对象在参数列表中的索引 位置,索引值从0开始,如果省略,则根据值的先后顺序自动分配

fill

可选参数,用于指定空白处填写的字符

align

可选参数,用于指定对齐方式(值为<表示内容左对齐(文本形式展示的默认方式);值为>表示内容右对齐(数字形式展示的默认方式);值为=表示内容右对齐,将符号填在内容的最左侧(仅针对数字形式展示有效);值为^表示内容居中对齐),需要与width配合使用

sign

可选参数,用于指定有无符号数(+:表示正数加正号;-:表示正数不变,负数加负号;空格:正数加空格,负数加负号;,:以逗号分隔的数字格式)

#

可选参数,对于二进制,八进制和十六进制,如果加上“#”,表示会显示0b/0o/0x前缀,否则不显示前缀

width

可选参数,用于指定最小宽度,即字符串至少应该有该值指定的字符数,也就是宽度。

.precision

可选参数,如果字符串转为实数,则用于指定转换后数字保留的小数位数;如果字符串转为字符串,那么该数字表示转换后的最大保留字符数。

type

字符串转为什么形式数据来按格式展示。

type选项

格式字符说明格式字符说明
s对字符串类型格式化b将十进制整数自动转换成二进制表示再格式化
d十进制整数o将十进制整数自动转换成八进制表示再格式化
c将十进制整数自动转换成对应的Unicode字符x或者X将十进制整数自动转换成十六进制表示再格式化
e或者E转化成科学计数法表示再格式化f或者F转换为浮点数(默认保留6位)再格式化
g或者G自动在e和f或者E和F中切换%显示百分比

例如:

import math
# 格式化说明为:,.2f使用了[sign][.precision][type]三部分
# sign为,即以逗号分隔数字
# .precision为.2,即保留两位小数
# type为f,即以浮点数形式展示字符串
# 打印结果为 ¥5,201.00元
print('¥{:,.2f}元'.format(1251+3950)) 

# index为0,即手动设定取用的format参数内容(如果为手动指定,则第二个格式化说明无法取到内容)
# 第一个格式化说明:.1f使用了[.precision][type]两部分
# .precision为.1,即保留一位小数
# type为f,即以浮点数形式展示字符串
# 第二个格式化说明:E使用了[type]
# type为E,即以科学计数法的形式展示字符串
# 打印结果为 120000.1用科学计数法表示:1.200001E+05
print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1)) 

# 第一个格式化说明:.0%使用了[.precision][type]两部分
# .precision为.0,即保留0位小数
# type为%,即以百分比展示字符串
# 第二个格式化说明:.2%使用了[.precision][type]两部分
# .precision为.2,即保留2位小数
# type为%,即以百分比展示字符串
# 打印结果为 天才是由1%的灵感,加上99.00%的汗水
print('天才是由{:.0%}的灵感,加上{:.2%}的汗水'.format(0.01,0.99))#按百分比输出

# 第一个格式化说明:{:0>9s}使用了[[fill]align][width][type]三部分
# fill为0 align为>,即右对齐,不足最小宽度的话,用0在左侧填充
# 注:文本形式展示默认左对齐,所以这里声明右对齐。
# width为9,即最少展示9个字符
# type为s,即以文本形式展示
# 第二个和第三个格式化说明{:s}使用了[type]
# type为s,即以文本形式展示字符串
# 打印结果如下
# 编号:000000007	公司名称:百度	官网: http://www.baidu.com
# 编号:000000008	公司名称:淘宝	官网: http://www.taobao.com
template='编号:{:0>9s}\t公司名称:{:s}\t官网: http://www.{:s}.com'
context1=template.format('7','百度','baidu')
context2=template.format('8','淘宝','taobao')
print(context1+'\n'+context2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值