首页 > 技术文章 > Python格式化字符串二(format)

ylzchs 2020-07-02 10:22 原文

二. 使用format格式

格式 [[fill]align][sign][#][0][width][,][.precision][type]

fill 可选 空白处填充的字符

align 可选 对齐方式(需配合width使用) 
< 内容左对齐
> 内容右对齐(默认)
= 内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字 ,内容居中

sign 可选 有无符号数字
+,正号加正,负号加负;
-,正号不变,负号加负;
空格 ,正号空格,负号加负;

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

, 可选 为数字添加分隔符,如:1,000,000

width 可选 格式化位所占宽度

.precision 可选 小数位保留精度

type 可选 格式化类型

传入” 字符串类型 “的参数 s,格式化字符串类型数据
空白,未指定类型,则默认是None,同s

传入“ 整数类型 ”的参数 
b,将10进制整数自动转换成2进制表示然后格式化
c,将10进制整数自动转换为其对应的unicode字符
d,十进制整数
o,将10进制整数自动转换成8进制表示然后格式化;
x,将10进制整数自动转换成16进制表示然后格式化(小写x)
X,将10进制整数自动转换成16进制表示然后格式化(大写X)

传入“ 浮点型或小数类型 ”的参数 e, 转换为科学计数法(小写e)表示,然后格式化;
E, 转换为科学计数法(大写E)表示,然后格式化;
f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
g, 自动在e和f中切换
G, 自动在E和F中切换
%,显示百分比(默认显示小数点后6位)

例:

1.格式化字典形式

>>> f1="I am {0},I am {1}d years old!".format("Tom",22)
>>> print(f1)
I am Tom,I am 22d years old!
>>> f2="I am {name},I am {age}d years old!".format(**{"name":"Jeck","age":23})#此处**必不可少
>>> print(f2)
I am Jeck,I am 23d years old!

2.字符串中变量的赋值

  >>> mstr="I am %s,and I have %d book!"
  >>> print("mstr---",mstr%("Tim",3))
  mstr--- I am Tim,and I have 3 book!

 

  >>> mstr1="I am %s,and I have %d book!"%("Tom",5)

  >>> print("mstr1---",mstr1)

mstr1--- I am Tom,and I have 5 book!
>>> mstr2="I am {0},and I have{2} pen,and I love {1}!".format("Jack","北京",10)
>>> print("mstr2---",mstr2)
mstr2--- I am Jack,and I have10 pen,and I love 北京!
>>> mstr3="I am {0},and I have {1} pen,and I love {2}!".format("Jack",10,"北京")
>>> print("mstr3---",mstr3)
mstr3--- I am Jack,and I have 10 pen,and I love 北京!

3.常用的字符串操作函数

>>> mstr="xya abaac  ddddeeee ff aabddv"
>>> print(mstr.count("a"))#统计a出现的次数
6
>>> print("返回第一个c出现的索引位置:",mstr.find("c"))
返回第一个c出现的索引位置: 8
>>> print(mstr.replace("a","^-^"))#用^-^替换所有的a
xy^-^ ^-^b^-^^-^c  ddddeeee ff ^-^^-^bddv
>>> print(mstr.replace("a","^-^",1))#用^-^替换第一个a
xy^-^ abaac  ddddeeee ff aabddv
>>> print(mstr.title())#字符串的首字母大写
Xya Abaac  Ddddeeee Ff Aabddv

4.字符串中插入字符、分割字符串

>>> mstr="xya abaac daaee f abv"
>>> print ("^-^".join(mstr))#把^-^插入到字符串的每个字符之间
x^-^y^-^a^-^ ^-^a^-^b^-^a^-^a^-^c^-^ ^-^d^-^a^-^a^-^e^-^e^-^ ^-^f^-^ ^-^a^-^b^-^v
>>> print(" ".join(mstr))#把空格插入到字符串的每个字符之间
x y a   a b a a c   d a a e e   f   a b v
>>> print(mstr.split())#按切割字符串,默认在空格处切分
['xya', 'abaac', 'daaee', 'f', 'abv']
>>> print(mstr.split("a"))#割字符串,以a为分隔符
['xy', ' ', 'b', '', 'c d', '', 'ee f ', 'bv']

5.删除字符串中的空格

>>> mstr="   akdflkas:dsfadf    "
>>> print(mstr.strip())#移除字符串两边的空格
akdflkas:dsfadf
>>> print(mstr.lstrip())#移除字符串左边的空格
akdflkas:dsfadf    
>>> print(mstr.rstrip())#移除字符串右边的空格
   akdflkas:dsfadf

6.填充字符串

(1)填充常跟对齐一起使用,^<>分别是居中、左对齐、右对齐,后面带宽度
(2):号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

>>> "{:20}".format("asdf")#默认在规定的20个字符长度中左对齐
'asdf                '
>>> "{:^20}".format("adff")#^表示在规定20个字符的长度中居中对齐
'        adff        '
>>> "{:<20}".format("asdf")#<表示在规定的20个字符的长度中左对齐
'asdf                '
>>> "{:>20}".format("asdf")#>表示在规定的20个字符的长度中右对齐
'                asdf'
>>> "python{:*<20}".format("666")#指定填充字符串'666'在'python'后,并且左对齐,别外不够20个字符时用*号补齐
'python666*****************'
>>> "python{:*^20}".format("666")#指定填充字符串'666'在'python'后,并且在20个字符的长度中居中对齐,不够的用*补齐
'python********666*********'
>>> "python{:*>20}".format("666")#指定填充字符串'666'在'python'后,并且在20个字符的长度中右对齐,不够的用*补齐
'python*****************666'

7.加千位分隔符

>>> "{:,}".format(1234567890)#添加千位分割符
'1,234,567,890'

 8.格式化小数点位数

#保留3位小数点的方法
>>> x=1122.12221221 >>> "{:0.3f}".format(x) '1122.122' >>> "{0:0.3f}".format(x) '1122.122' >>> "{0:.3f}".format(x) '1122.122' >>> "{:.3f}".format(x) '1122.122'

 

推荐阅读