Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待
4999元包邮
去购买 >
(1)简易字符串格式化
字符串属于不可变序列,只能生成新的,不能改变旧的。“字符串格式化”有点像以前C语言的sprintf,可以将若干变量代入格式化的字符串,生成一个符合要求的新字符串。
转换字符简述举例或说明
%d
十进制整数
'num: %d' %16 # 结果为 'num: 16'
%o
八进制整数
'num: %o' %16# 结果为 'num: 20'
%x, %X
十六进制整数(大小写影响输出字母)
'num: %x' %31 # 结果为 'num: 1f'(小写)
'num: %X' %31 # 结果为 'num: 1F'(大写)
%f, %F
浮点数,默认输出6位小数(不区分大小写)
'num: %f' %3.14 # 结果为 'num: 3.140000'
%e, %E
用科学计数法表示的浮点数(大小写影响输出字母)
'num: %e' %314 # 结果为 'num: 3.140000e+02'
'num: %E' %314 # 结果为 'num: 3.140000E+02'
%g, %G
若“指数5”则和%e,%E相同,否则同%f,%F(大小写影响输出字母)
'num: %g' %3140000 # 结果为 'num: 3.140000e+06'
'num: %g' %314 # 结果为 'num: 314'
%s
字符串或任意可用str()生成字符串的对象
'a %s' %'box' # 结果为 'a box'
'a %s' %[1,2] # 结果为 'a [1,2]'
%r
同上,只不过用repr()去生成字符串
'a %r' %'box' # 结果为 "a 'box'"
%c
用ascii码数字去生成单个字符
'char is %c' %97 # 结果为 'char is a'
'char is %c' %0x61 # 结果为 'char is a'
%%
转义%(百分号)
'50 %%' # 结果为 '50 %'
%(键名)转换字符
指定的键必须出现在后面的字典中,若不存在则引发KeyError错误
'%(a)d' %{'a':1}# 结果为 '1',注意:转换字符d不要漏掉
“修饰符”可以插入上面的%和字母之间,用以更精确地控制输出字符串的格式,若干个修饰符可组合一起使用。
修饰符简述举例或说明
数字
指定被修饰对象的最小宽度(默认右对齐)
'a%5d' %3 # 结果为 'a 3' (数字3前面有4个空格)
'a%5s' %'bc' # 结果为 'a bc' (bc前面有3个空格)
-
表示左对齐
'a%-5d' %3 # 结果为 'a3 ' (数字3后面有4个空格)
'a%-5s' %'bc' # 结果为 'abc ' (bc后面有3个空格)
+
若被修饰对象为正数,则数字前生成加号
'a%+5d' %3 # 结果为 'a +3' (数字+3前面有3个空格)
'a%-+5d' %3 # 结果为 'a+3 ' (左对齐,+3后有3个空格)
空格
若被修饰对象为正数,则数字前保留一个空格
'a% 5d' %3 # 结果为 'a 3' (' 3'后面有3个空格)
'a%-+5d' %3 # 结果为 'a 3 ' (' 3'后有3个空格)
0
若被修饰对象为数字且为右对齐,则在数字前用0代替空格填充
'a%+05d' %3 # 结果为 'a+0003' (%+05d的总宽度仍为5)
.数字
若被修饰对象为浮点数,则表示小数点后显示位数;若为字符串,则表示字符串的最大宽度
'%8.2f' %3.1415 # 结果为 ' 3.14'
'# 上例含义为:总宽度为8,小数点后保留2位小数,故3.14前有4个空格
*
可以在指定格式数字(宽度、小数位数等)时,用*字符代替直接数字,然后在后面的变量中给出数值
a = 8; b = 2
'%*.*f' %(3.14,a,b) # 结果为 ' 3.14'
(2)高级字符串格式化
通过在字符串对象上调用format()方法来进行字符串格式化,使字符串格式化的语法更加规范。除了一些极其简单的情况外,一般推荐用format()这种方式来进行字符串格式化。
● 基本用法
以下在字符串内花括号中的内容称为“占位符”。
用法简述举例或说明
{数字}
位置参数方式,花括号中的占位符指明后面数据出现的位置(从0开始)
'{0} {1} is {2}'.format('a','b',3.14)
# 结果为 'a b is 3.14'
{参数名}
关键字参数方式,花括号中占位符指明后面数据的关键字参数
'{name} is {age}'.format(name='Tom',age=6)
# 结果为 'Tom is 6'
联合使用
根据函数入参规则,所有位置数据必须出现在关键字参数前面
'{0} plus {1} is {ans}, {name}!'.format(1,5,ans=6,name='Tom')
# 结果为 '1 plus 5 is 6, Tom!'
扩展使用
占位符还可以进行序列索引、字典键名、对象属性查找,用法见右边各例。
'{0[2]}'.format([1,2,3]) # 序列索引,结果为 '3'
'{li[2]}'.format(li=(1,2,3)) # 序列索引,结果为 '3'
'{0[a]}'.format({'a':1}) # 字典键名索引,结果为 '1'
'{0.attr}'.format(obj) # 取出对象的属性,假设 obj对象具有属性attr
{{, }}
如果要在字符串中表示花括号本身,则需要打上2个花括号
'{{abc}}'.format() # 结果为 '{abc}'
● 格式说明符
可以使用格式说明符,对输出进行更加精确的控制。方法是用一个冒号给每个占位符添加格式说明,即 {占位符 :格式说明符 } 的形式。“格式说明符”的基本语法如下:
[ [fill] align] [sign] [0] [width] [group_option] [.precision] [type]
上面 [] 中的每个说明符都是可选的,各说明符的含义和用例见下表:
说明符简述举例或说明
fill
fill必须align一起使用,用来指定填充字符。
'{0:*^9}'.format('abc') # 结果为 '***abc***'
# 其中,*为填充字符,^表示居中对齐,9为指定宽度
align
对齐方式(默认数字为右对齐,字符串为左对齐),可取值为:, ^,分别表示:左对齐、右对齐、居中对齐。
'{0:5}'.format('abc') # 结果为 'abc '
'{0:>5}'.format('abc') # 结果为 ' abc'
'{0:^5}'.format('abc') # 结果为 ' abc '
sign
可取值为:+, -, 空格。“+”表示所有数字前都要加上符号,“-”表示只在负数前加符号(默认值),“空格”表示在正数前面加一个空格。
'{0:+}'.format(3.14) # 结果为 '+3.14'
0
用0来填充数字前面的空白,对字符串不起作用
'{0:+08}'.format(3.14) # 结果为 '+0003.14'
width
指明宽度
'{0:8}'.format(3.14) # 结果为 ' 3.14'
'{0:8}'.format('abc') # 结果为 'abc '
group_option
千分位分隔,取值可为“,”或“_”(下划线为Python3.6新增,可用来表示二、八、十六进制的每4位分隔。)
'{0:,}'.format(12345678) # 结果为 '12,345,678'
'{0:_b}'.format(0xA5) # 结果为 '1010_0101'
.precision
浮点数要显示的位数,后面需跟type为f或e,否则不起作用。
'{0:.4f}'.format(3.14) # 结果为 '3.1400'
'{0:.4e}'.format(3.14) # 结果为 '3.1400e+00'
type
辅助声明“说明符”的数据类型,可取值范围见下表。(默认:字符串为s、整数为d、小数为f)
type各值举例见下表
● type取值范围
字符简述举例或说明
d, i
十进制整数
'{0:d}'.format(10) # 结果为 '10'
b
二进制整数
'{0:b}'.format(10) # 结果为 '1010'
o
八进制整数
'{0:o}'.format(10) # 结果为 '12'
x, X
十六进制整数(大小写影响输出字母)
'{0:x}'.format(10) # 结果为 'a'
'{0:X}'.format(10) # 结果为 'A'
f, F
浮点数(默认显示6位小数)
'{0:f}'.format(3.14) # 结果为 '3.140000'
e, E
科学计数法表示(大小写影响输出字母)
'{0:e}'.format(3.14) # 结果为 '3.140000e+00'
'{0:E}'.format(3.14) # 结果为 '3.140000E+00'
g, G
若“指数5”则和g,G相同,否则同f,F(且不会去填满小数6位)
'{0:g}'.format(3.14) # 结果为 '3.14'
%
把一个数乘以100,并在后面加上百分号
'{0:%}'.format(3.14) # 结果为 '314.000000%'
s
表示字符串
'{0:s}'.format('abc') # 结果为 'abc'
c
用ascii码数字去生成单个字符
'{0:c}'.fomrat(97)# 结果为 'a'
● 用参数代入说明符
说明符同样可以用format()函数的输入参数来代入,但只能嵌套一层深度,用法举例见下:
>>> '{0:{w}}'.fomrat('a',w=3) # 结果为 'a ' (将{w}用后面的参数w=3代入,变为'{0:3}'
>>> '{0:.{1}f}'.format(3.14,4) # 结果为 '3.1400' (将{1}用后面的第二个参数4代入,变为'{0:.4f}')
返回标题
原文链接:https://www.cnblogs.com/initcircuit/p/11574434.html