python 的 format 方法

 

'''

2022年05月05日

字符串的format 方法非常强大,能满足我们遇到的大部分需求,可谓博大精深。

强烈建议大家认真学习format方法,熟练使用

举几个栗子供大家打牙祭

'''

##例(1)指定小数位数

outStr = "{outNum:0>8.3f}".format(outNum=1.1415)

## outNum是自己定义的“元字符”,根据关键字实现映射

## {}和:是格式符号。

## {}里面的内容为需要格式化的内容

## :前面的outNum是映射对象,:后面的内容是映射对象的格式

## 小数点后面的3f 表示3位小数

## 小数点前面的8表示这个数一共8个字符,小数点也算一个字符

## 冒号后面的0>表示如果这个字符不够8位,那么在左边补零

## 如果超过了8位,看例(2)

## 除了补0这种常规做法,还可以补其他的字符,看例(3)

print(outStr,type(outStr),len(outStr))

## 输出结果为 0001.141 <class 'str'> 8,表示outStr是一个长度为8的字符串

## 例(2) 超过8位

outStr = "{outNum:0>8.3f}".format(outNum=2345678.1415) ## outNum超过了8位

print(outStr,type(outStr),len(outStr))

## 输出结果为 2345678.141 <class 'str'> 11

##把前面的数保留下来了,比较合乎常理。

##例(3) 左边用其他字符填充

outStr = "{outNum:k>8.3f}".format(outNum=3.1415)##k

print(outStr,type(outStr),len(outStr)) ## 输出:kkk3.142 <class 'str'> 8

outStr = "{outNum:好>8.3f}".format(outNum=3.1415)##好

print(outStr,type(outStr),len(outStr)) ## 输出:好好好3.142 <class 'str'> 8

outStr = "{outNum:>8.3f}".format(outNum=3.1415)##空白

print(outStr,type(outStr),len(outStr)) ## 输出 : 3.142 <class 'str'> 8

## 在写这一段的时候想到了进一步改进上位机显示效果的方法,改进后显示更为清爽。 可谓温故知新。2022年5月5日

##例(4)只输出整数,要求outNum为整数:

outStr = "{outNum:0>4}".format(outNum=8)

print(outStr,type(outStr),len(outStr))

## 输出结果为 0008 <class 'str'> 4

outStr = "{outNum:0>3}".format(outNum=round(4.1415))##需要转为整数

print(outStr,type(outStr),len(outStr))

## 输出结果为 004 <class 'str'> 3

##例(5)还可以顺带做一些简单的运算:

outNum0 = 300 #绝对温度 K

outStr = "{outNum:0>6.2f}".format(outNum = outNum0 - 273.15)#摄氏温度 C

print(outStr,type(outStr),len(outStr))

##026.85 <class 'str'> 6

## 例(6)循环操作完成list的转换

outNum0 = [12.568,2.3,3.1415,123.4]

outStrList = ["{outNum:0>5.2f}".format(outNum = xx) for xx in outNum0]

print(outStrList) ## ['12.57', '02.30', '03.14', '123.40']

## 例(7)同时完成多个关键字的转换

outNum0 = 303.123 #绝对温度 K

outStr = "{outNumC:0>6.2f}C, {outNumF:0>6.2f}F".format(outNumC = outNum0 - 273.15,outNumF=32+(outNum0-273.15)*1.8 )#摄氏温度 C; 华氏温度 F

print(outStr) ## 029.97C, 085.95F

## 例(8)关键字还可以乱入,杀回马枪

outNum0 = 303.123 #绝对温度 K

outStr = "{outNumC:0>6.2f}C, {outNumF:0>6.2f}F,又来一个{outNumC:0>6.2f}C".format(outNumC = outNum0 - 273.15,outNumF=32+(outNum0-273.15)*1.8 )#摄氏温度 C; 华氏温度 F

print(outStr) ## 029.97C, 085.95F,又来一个029.97C

## 例(9) 这个>表示右对齐,其实<和^都可以用,分别表示左对齐与居中对齐

## 例(10) 进制转换

outNum0 = 17

outStr = "二进制:{outNum:0>8b},十六进制:{outNum:0>4x}".format(outNum = outNum0)

print(outStr) ## 二进制:00010001,十六进制:0011

outStr = "二进制:{outNum:0>8b},十六进制(小写):{outNum:0>4x},十六进制(大写):{outNum:0>2X}".format(outNum = outNum0)

print(outStr) ## 二进制:00001110,十六进制(小写):000e,十六进制(大写):0E

########## 上面的例子是通过自定义的关键字outNum来实现映射的,还有其他的办法也可以实现映射。

## 例(11)对于一个对象,可以通过对象属性进行映射

## 例(12)对于一个list可以通过下标进行映射

outNum0 = [12.58,12.34,3.1415,123.4]

outStr = "{outNum[0]:0>5.2f},{outNum[1]:0>6.2f}".format(outNum = outNum0)

print(outStr) ## 12.58,012.34

## 例(13)对于一个字典可以通过键进行映射

##还有根据位置进行映射的,但我觉得那种用法过于滥情,就不打算说了。

##熟练掌握format,字符格式无忧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值