目录
2.%号占位符(预留位置)
数据拼接方式
1.+号和,号
+ 号拼接 注意,整数和浮点数要转换为字符串类型!!!
a='星黛露'
b=169
print(a+'的价格是'+str(b))#易错点,整数和浮点数没有转换为字符串!
>>>星黛露的价格是169
,号拼接(如果用逗号来拼接,不需要关注字符串的数据类型,打印的内容中间会出现空格!)
a = '星黛露'
b = 17.5
print(a,'price is ',b)
>>>星黛露 price is 17.5###如果用逗号来拼接,打印的内容中间会出现空格!
2.%号占位符(预留位置)
通用占位符格式:
%[(name)][flags][width].[precision]typecode
- (name) 可选,用于选择指定的key
- flags 可选,可供选择的值有:(不填则表示不需要对齐)
- + 右对齐;正数前加正号,负数前加负号;
- - 左对齐;正数前无符号,负数前加负号;
- 空格 右对齐;正数前加空格,负数前加负号;
- 0 右对齐;正数前无符号,负数前加负号;用0填充空白处
- width 可选,占有宽度
- .precision 可选,小数点后保留的位数(注意点)
- typecode 必选(常用类型,s/d/f类型!!!)
- s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置 %s:字符串类型
- d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 %d:整数类型
- f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位) %f:浮点数类型
- r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置(原格式输出!)
- c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
- o,将整数转换成 八 进制表示,并将其格式化到指定位置
- x,将整数转换成十六进制表示,并将其格式化到指定位置
- e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
- %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
- 注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式
# 1.name的用法,基本用的很少,对应的时候后面的字典类型
print('%(name)s prcie is %(price)d'%{'name':'米妮','price':17})
>>>米妮 prcie is 17
tpl = "i am %s" % "alex"
>>>i am alex
tpl = "i am %s age %d" % ("alex", 18)
>>>i am alex age 18
tpl = "i am %s age %08d" % ("alex", 18) #占8个位置,向右对齐,不足的用0补足
>>>i am alex age 00000018
tpl = "percent %.2f" % 99.97623 #保留两位小数
>>>percent 99.98
tpl = "i am %.2f %%" % (123.425556) #%%号只保留一个百分号
>>>i am 123.43 %
#%r的用法,原格式输出
adj= ['easy','so so','difficult','sunshine','life','crazy']
print ('Python is %s ' % adj[3])
>>>Python is sunshine
print ('Python is %r ' % adj[3])
>>>Python is 'sunshine'
个人总结:%‘(+或者-,+表示左边补齐空格,-表示右边补齐空格)’(保留的空格数量).(截取的数量,也就是对变量截取多少个数字,从左边开开始计算)
要点强调:先截取n个字符,再按需要长度补空格
原则:先截再补
a = '星黛露123456'
b = '米妮'
print('这个玩偶叫做%-5.3s'%a)
>>>这个玩偶叫做星黛露 #星黛露后面会有两个空格 #先截取三个字符,再向左对齐补齐空格
3.f-string
自定义格式:对齐,宽度、符号、补零、精度、进制等
f-string采用的是{content:format}设置字符串格式,其中content是替换并填入字符串的内容,可以是变量,表达式或者是函数式子,format是格式描述符号,采用默认格式时,不需要指定,只要写上{content}内容即可。
# {}内使用变量、表达式或者函数等
name='jan'
print(f"my name is {name}")
>>>my name is jan
age=17
print(f"my age is {age+1}") #直接数学计算也可以
>>>my age is 18
def fun(a):
a+=1
return a
print(f'my age is {fun(7)}')
>>>my age is 8
#关于符号问题
#1.注意括号内的符号的问题,注意单引号双引号三引号的问题
print(f"""i said {"his's a boy"}""")
>>>i said his's a boy
#2.大括号外的引号还可以使用 \ 转义,但大括号内不能使用 \ 转义:
#3.f-string大括号外如果需要显示大括号,则应输入连续两个大括号 {{ 和 }}:
f-string:自定义格式:对齐,宽度、符号、补零、精度、进制等
width:整数width指定宽度
0width:整数width指定宽度,开头以0指定高位用0补足
width.precision:煮熟width指定宽度,整数precision指定显示的精度
注意:
1.0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。
2.width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。
3.width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符
name='kitty'
price=18.983
age=5
print(f'{name:<6s} price is {price:.3f},she is {age:>3d} old')
>>>kitty price is 18.983,she is 5 old
#<表示左对齐,>表示右对齐 ^表示居中对齐
#width.prcision 宽度.精度 s--string d--digit f--float
4.format(用得多)
基础用法:
tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
>>>i am seven, age 18, alex #位置传参数!
tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
>>>i am seven, age 18, alex# 星号表示不定长传参!后面跟的是列表!
tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
>>>i am seven, age 18, really seven #format可以根据前面数字来锁定后面传入参数的位置!
tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
>>>i am seven, age 18, really seven # 不定长传参
tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
>>>i am seven, age 18, really seven #类似关键字传参
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
>>>i am seven, age 18, really seven #双星星号传参字典,传键值!
tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
>>> i am 1, age 2, really 3
自定义格式:
[fill] [align] [sign] [#] [0] [width] [,] [.precision] [type]
- fill 【可选】空白处填充的字符
- align 【可选】对齐方式(需配合width使用)
-
- <,内容左对齐
- >,内容右对齐(默认)
- =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
- ^,内容居中
- sign 【可选】有无符号数字
-
- +, 正号加正,负号加负;
- -, 正号不变,负号加负;
- 空格 ,正号空格,负号加负;
- # 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
- , 【可选】为数字添加分隔符,如:1,000,000
- width 【可选】格式化位所占宽度
- .precision 【可选】小数位保留精度
- type 【可选】格式化类型
- 传入” 字符串类型 “的参数
-
- s,格式化字符串类型数据
- 空白,未指定类型,则默认是None,同s
- s,格式化字符串类型数据
- 传入“ 整数类型 ”的参数
-
- b,将10进制整数自动转换成2进制表示然后格式化
- c,将10进制整数自动转换为其对应的unicode字符
- d,十进制整数
- o,将10进制整数自动转换成8进制表示然后格式化;
- x,将10进制整数自动转换成16进制表示然后格式化(小写x)
- X,将10进制整数自动转换成16进制表示然后格式化(大写X)
- b,将10进制整数自动转换成2进制表示然后格式化
-
- 传入“ 浮点型或小数类型 ”的参数
-
- e, 转换为科学计数法(小写e)表示,然后格式化;
- E, 转换为科学计数法(大写E)表示,然后格式化;
- f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- g, 自动在e和f中切换
- G, 自动在E和F中切换
- %,显示百分比(默认显示小数点后6位)
- e, 转换为科学计数法(小写e)表示,然后格式化;
name='seven'
age=18
money=18.885
print('i am {:8.3s},age{:^5d},money{:5.2f}'.format(name,age,money))
>>>i am sev ,age 18 ,money18.89
#和f-string类似,自定义格式一样
#8.3s 占8个位置,截取3个字符串
#^5d 占5个位置,居中
#5.2 f 占5个位子,保留2位小数
# s--string d-digit
ps:本文内容参考部分博客内容,供个人学习使用,如有侵权请联系,谢谢~