字符串格式化有两种方式,%和format
先介绍下%号的方法
#%s的语法结构,叫做占位符,就是先占一个位置,然后我们用真实的要显示的数据替换占位符即可
#最简单的用法就是下面的方式,其实%s还有其他的功能
# s = '我的名字是%s,我的年龄是%d' %('alex',2)
# print(s)
# 我的名字是alex,我的年龄是2
#%[(name)][flags][width].[precision]typecode
#第一个参数[(name)],默认情况下%是按照顺序进行格式化的,用了name,我们可以用name来进行字符串格式化,比如下面的例子,
#可以根据名字来做格式化
# s = '我的名字是%(name)s,我的年龄是%(age)d' %{'name':'alex','age':12}
# print(s)
# 我的名字是alex,我的年龄是12
#flags,可以是 + - 空格 0,这个一般和width配合起来使用,%没有居中的功能
#+号,右对齐,正数前加+号,负数前加-号
# s = 'my age is %(age1)+10dDDDD,my brother age is%(age2)+10d' %{'age1':12,'age2':-12}
# print(s)
# my age is +12DDDD,my brother age is -12
#-号,左对齐,正数前无符号,负数前加-号
# s = 'my age is %(age1)-10dDDDD,my brother age is%(age2)-10d' %{'age1':12,'age2':-12}
# print(s)
# my age is 12 DDDD,my brother age is-12
#0 ,右对齐,正数前无符号,负数前加-号,用0填补空白处
#空格,右对齐,正数前加空格,负数前加-号
#width,占的位置的长度
#precision 小数点后显示多少位,这里会做四舍五入
# s = 'my age is %(age1)-10fDDDD,my brother age is%(age2)-10d' %{'age1':12.1234445,'age2':-12}
# print(s)
# my age is 12.123444 DDDD,my brother age is-12
# s = 'my age is %(age1)-10.4fDDDD,my brother age is%(age2)-10d' %{'age1':12.1234445,'age2':-12}
# print(s)
# my age is 12.1234 DDDD,my brother age is-12
# typecode
#s:是字符串
#o:将传入的值转换为八进制,然后把转换后的值做字符串格式化
#x:将传入的值转换为16进制,然后在把转换后的值做字符串格式化
#d,正数
#f,浮点数
# s = 'aaaaaadd %d------------%o----------%x' %(15,15,15)
# print(s)
# aaaaaadd 15------------17----------f
#e|E科学计数法,一个是显示小写的e,一个是大写的E
# s = '%e--------------%E' %(100000000000000000000,100000000000000000)
# print(s)
# 1.000000e+20--------------1.000000E+17
#%
# s = 'football %'
# print(s)
# s = 'football %%'
# print(s)
# football %
# football %%
# s = 'name is %s,%' %('dddd')
# print(s)
#这样会报错的
# s = 'name is %s,%%' %('dddd')
# print(s)
# name is dddd,%
下面介绍下format的方法
# [(fill)align][sign][#][0][width][,][.precision][type]
#fill:【可选】空白处填充的字符,这里只能写一个字符
#align,对齐方式,需要配合width使用
#<:内容右对齐
#>:内容左对齐
#=:
#^:内容居中
#sign 【可选】有无符合数字、
# + 正号加正,负数加负
#- 正号不变,负数加负
#空格,正号加空格,负数加负
# #号,【可选】对于二进制,八进制,16进制,如果加上#号,会显示0b 0o 0x,如果不加,则不显示前面的符号
#,号,如果比较大数字,可以每三位加一个逗号100,000,,000
#width,格式化位所占的宽度
#.precision,小数点的保留位
#type,格式化的类型
#b,将传入的数字转换成二进制
#format的常用的用法,这个是按照顺序来格式化的
# s = 'aaaaaaaadd{0},dddd{0}----{1}' .format('AAA','BBBB')
# print(s)
# aaaaaaaaddAAA,ddddAAA----BBBB
#按照名字做字符串格式化
# s = '-------{name:s},-------{age:d}------{name:s}' .format(name = 'AAA',age = 23)
# print(s)
# -------AAA,-------23------AAA
#[(fill)align][sign][#][0][width][,][.precision][type],这些全部都要放在冒号后面,冒号前面只能有一个字段,就是name
# s = '-------------{:@^10s}-----------' .format('AAA')
# print(s)
# -------------@@@AAA@@@@-----------
# s = '-------------{name:@^10s}-----------' .format(name = 'AAA')
# print(s)
# -------------@@@AAA@@@@-----------
# s = '--------{:%}' .format(1.345566677)
# print(s)
# --------134.556668%
#format必须要掌握的几种方式
# s = 'i am {},age {},{}' .format('foot',12,'boy')
# print(s)
# i am foot,age 12,boy
# s = 'i am {},age {},{}' .format(*['foot',12,'boy'])
# print(s)
# i am foot,age 12,boy
# s = 'i am {0},age {1},{1}' .format('foot',12)
# print(s)
# i am foot,age 12,12
# s = 'i am {0},age {1},{1}' .format(*['foot',12])
# print(s)
# i am foot,age 12,12
# s = 'i am {name},age is {age}' .format(name = 'foot',age = 12)
# print(s)
# i am foot,age is 12
# s = 'i am {name},age is {age}' .format(**{'name':'football','age':12})
# print(s)
# i am football,age is 12
# s = 'i am {name:s},age is {age:d}' .format(name = 'foot',age = 12)
# print(s)
# i am foot,age is 12
# s = '--{:b}--{:d}--{:x}--{:X}--{:%}' .format(15,15,15,15,15)
# print(s)
# --1111--15--f--F--1500.000000%
# s = '--{0:b}--{0:d}--{0:x}--{0:X}--{0:%}' .format(15)
# print(s)
# --1111--15--f--F--1500.000000%
s = '--{num:b}--{num:d}--{num:x}--{num:X}--{num:%}' .format(num = 15)
print(s)
# --1111--15--f--F--1500.000000%