字符串格式化

基本格式:
‘(其他用于显示说明字符)%(需要控制显示字符的形式)’%(对应的变量名称)
形如:(如果在集成开发环境,需要使用print函数输出才能显示)

>>> a='transdasogj'
>>> '显示的a是%.6s'%a
'显示的a是transd'

各个部分的说明

一、 %字符:(冒号内的)标记转换说明符的开始
二、转换标志:-(减号)表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0 表示转换值若位数不够则用 0 补充(补0这种只是在数值型字符串中使用)

>>> '%+12s'%'sadgkkg'
'     sadgkkg'
>>> '%12s'%'sadgkkg'
'     sadgkkg'
>>> '%-12s'%'sadgkkg'
'sadgkkg     '
>>> '%+12d'%35465777
'   +35465777'
>>> '%+012d'%35465777
'+00035465777'

三、 最小字段宽度:转化后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出

>>> '%*d'%(3,12344)
'12344'
>>> '%*d'%(7,12344)
'  12344'
>>> '%.*s'%(3,'dgahehjsxts') #这里最大宽度放在了后边的元组里
'dga'

四、点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就是表示最大字段宽度。如果是*,那么精度就会从元组中读出

字符串格式化转换类型

c:字符 f,F:十进制浮点数
d,i:带符号的十进制整数 o:不带符号的八进制
n:不带符号的十进制 C:单字符(接受整数或者单字符字符串)
x:不带符号的十六进制(小写) X:不带符号的十六进制(大写)
e:科学计数法表示的浮点数(小写) E:科学计数法表示的浮点数(大写)
g:如果指数大于-4 或者小于精度值则和 e 相同,其他情况与 f 相同
G:如果指数大于-4 或者小于精度值则和 E 相同,其他情况与 F 相同
r:字符串(使用 repr 转换任意 Python 对象)
s:字符串(使用 str 转换任意 Python 对象)
在shell中运行时,

>>> '%r'%'dsag'
"'dsag'"
>>> print('%r'%'dsag')
'dsag'
>>> '%s'%'dsag'
'dsag'

在集成环境运行时,

print('%r'%'asg')
print('%s'%'sa')
'''结果为:
'asg'
sa
'''

字符的宽度和精度

浮点型的宽度和精度,通过点号(.)分开。浮点型的字符和字符串型的字符都可通过正负号来确定输出靠那边显示。+(默认)靠右边显示,宽度指的是最小宽度;—(负号)表示靠左边显示。且数值型字符串可以在宽度前加“0”表示使用0作为宽度过长时的填充字符,默认的填充字符空格

>>> pi=3.1415926
>>> '%-010.2f' % pi   #表示靠左显示;宽度为10;精度为2的浮点数显示
'3.14

str.format()的基本使用

参考:https://www.jianshu.com/p/b0489d08af57

简述:使用:和{ },作为填充位,大括号前的数值表示的是第几个参数,参数的位置是从0开始计数

python3 输出字符串 python怎么输出字符串_字符串

大括号前的数值表示的是第几个参数,参数的位置是从0开始计数
>>> print('{0} 和 {1}'.format('Google', 'Runoob'))
Google 和 Runoob
>>> print('{1} 和 {0}'.format('Google', 'Runoob'))
Runoob 和 Google
如果大括号里面有一个名字,则它的值是对应名称
>>> print('{name}he{mode}'.format(mode='jkajl',name='名字'))
名字hejkajl
使用:和{ }配合使用
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> for name, number in table.items():
# 下面的代码中的0和1表示位置,10表示变量的最小长度,d表示类型
...     print('{0:10} ==> {1:10d}'.format(name, number))
... 
Google     ==>          1
Runoob     ==>          2
Taobao     ==>          3
如果有一个很长的格式化字符串, 而不想将它们分开, 那么在格式化时通过变量名而非位置会是很好的事情。最简单的就是传入一个字典, 然后使用方括号 [] 来访问键值 :
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))
Runoob: 2; Google: 1; Taobao: 3

由于参数前有一个个星号(),表示参数是元组;参数前有两个星号(),表示参数是字典,则上面代码可等价,

>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
Runoob: 2; Google: 1; Taobao: 3