python 字符串格式化表达式

'''
格式化字符串
在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头(例如:%d)
在%操作符的右侧放置一个(或多个,嵌入到元组中)对象,这些对象将会插入到左侧想让python进行格式化字符串的一个(或多个)转换目标的位置上去

转换目标的通用结构:%[(name)][flags][width][.precision]typecode

在%和字符码之间可以进行以下的任何操作:
放置一个字典的键;
罗列出左对齐(-),正负号(+)和补零(0)的标志位;
给出数字的整体长度和小数点后的位数等
'''
print('that is %d %s bird'%(1,'dead'))
s='Ni'
print('the knights who say %s'% s)
print('%d %s %d you'%(1, 'spam', 4))
print('%s -- %s -- %s'%(42,3.14159,[1,2,3]))  #整数,浮点数和列表都被转换成了字符串

x=1234
y=-1234
z=1234567
print('integers: ...%d...'% x)    # integers: ...1234...
print('integers: ...%6d...'% x)    #宽度6位,默认右对齐    integers: ...  1234...
print('integers: ...%-6d...'% x)    #宽度6位,左对齐    integers: ...1234  ...
print('integers: ...%+6d...'% x)    #显示正负号    integers: ... +1234...
print('integers: ...%+6d...'% y)    #显示正负号    integers: ... -1234...
print('integers: ...%+6d...'% y)    #显示正负号    integers: ... -1234...
print('integers: ...%06d...'% x)    #补零凑6位    integers: ...001234...
print('integers: ...%06d...'% z)    #补零凑6位    integers: ...1234567...

x=111.23456789
print('%e' % x)    #1.112346e+02
print('%E' % x)    #1.112346E+02
print('%f' % x)    #111.234568  默认6位小数
print('%g' % x)    #111.235   默认小数点前后加起来最多6位
print('...%-7.2f...' % x)    #...111.23 ...  保留小数点两位,显示宽度7,左对齐
print('...%07.2f...' % x)    #...0111.23...  保留小数点两位,显示宽度7,补零
print('...%+7.1f...' % x)    #... +111.2...  保留小数点一位,显示宽度7,显示正负号

#如果在运行的时候才知道数字大小的话,则可以在格式化字符串中用一个*来指定通过计算得出width和percision,从而迫使他们的值从%运算符右边的输出中的下一项获取
print('%f, %.2f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0))    #元组中的4指定为precision   #0.333333, 0.33, 0.3333

#基于字典的字符串格式化
#字符串格式化同时允许左边的转换目标来引用右边字典中的键来提取对应的值
print('%(n)d %(x)s'%{"n":1,"x":"spam"})  #n和x引用了右边字典中的键,并提取他们相应的值 1 spam
reply="""
Greetings...
hello %(name)s!
Your age squared is %(age)s
"""
values={'name':'Bob', 'age':40}
print(reply % values)

#配合vars()函数使用
food='spam'
age=40
print(vars())   #返回字典包含了所有在本函数调用时存在的变量
print('%(age)d %(food)s' % vars())   #40 spam

猜你喜欢

转载自blog.csdn.net/weixin_37016700/article/details/78677420