Python格式化字符串方法——以%占位操作符为例

首页 / 新闻资讯 / 正文

#Python格式化字符串方法——以%占位操作符为例  ''' 在python的使用过程中,有时需要将输出的字符串做统一规定,因此需要提前编写一个字符串的模板。 模板中有格式符,这些格式符为最后输的字符串预先占据位置, 并规定其应该呈现的格式,包括字符的位置、对齐方式、空位补充方式等。 Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。 Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。  %格式符的语法:%[(name)][flags][width].[precision]typecode。  (name)参数:当使用字典作为真实值的存放容器,name在此对应输出值关联的字典的键名,必须使用小括号将键名括起来, 如果字典中不存在该键,则引发异常,否则输出该键对应的值; flags可以有+,-,' '或0。 +表示应该包含数字的正负号。-表示左对齐,没有则表示右对齐。 ' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充; width表示该输出值占用的宽度; precision表示小数点后精度; typecode表示输出值的类型,  具体含义如下: %s             字符串 (采用str()的显示) %r             字符串 (采用repr()的显示) #repr() 函数将对象转化为供解释器读取的形式,输出的字符加引号。 %c             单个字符 %b             二进制整数 %d,%i          十进制整数 %o             八进制整数 %x,%X          十六进制整数 %e,%E          指数 (基底写为e,E) %f,%F          浮点数 %g,%G          指数或浮点数 (根据显示长度) %u             无符号数(没有细查文档,经测试可以输出负数) %%             字符"%" '''   # 例1: #%格式符的语法:%[(name)][flags][width].[precision]typecode。 example_1 = "I'm %s, I'm %d years old." % ('wrh', 29) print(example_1) ''' 输出结果: I'm wrh, I'm 29 years old. '''  #例2: #%格式符的语法:%[(name)][flags][width].[precision]typecode。 example_2 = ("I'm %(name)s, I'm %(age)d years old." % {'name':'wrh', 'age':29}) print(example_2) ''' 输出结果: I'm wrh, I'm 29 years old. '''  #例3: #%格式符的语法:%[(name)][flags][width].[precision]typecode。 print("%+10x" % 10) #+表示应该包含数字的正负号,10表示宽度,表示十六进制(10的十六进制是a) print("%04d" % 5) #0表示用0填充,4表示宽度,d表示十进制整数 print("%6.3f" % 2.3) #6表示宽度,3表示精确到小数点后三位,f表示浮点数 print("%.*f" % (4, 1.2))  #width, precision为两个整数。我们可以利用*,来动态代入这两个量。4表示精确到小数点后四位。 print("%*.f" % (4, 1.2)) #width, precision为两个整数。我们可以利用*,来动态代入这两个量。4表示宽度为4。 ''' 输出结果:         +a 0005  2.300 1.2000    1 '''  #例4 #%格式符的语法:%[(name)][flags][width].[precision]typecode。 a = '30c' F = 1.8*float(a[0:-1]) + 32 print("%.1fF" % F) #精确到小数点后1位,浮点数,第一个F为固定字符,第二个F是所要格式化的字符变量。  ''' 输出结果: 86.0F '''  #练习题:  #假设:学生信息存放在一个字典数据中,格式如下: student={'name':'小明','class':20190301,'score':597.5} #1.输出学生姓名,右对齐,直接使用真实值 #%格式符的语法:%[(name)][flags][width].[precision]typecode。 print('%s同学' % student['name']) #2.左对齐,名字占用4个长度,班级10个长度,分数7个长度的浮点数,真实值使用元组存储 print('%10s班 %-4s同学,总分:%7.2f' % (student['class'],student['name'],student['score'])) #3.#右对齐其他格式与上例同,只是格式化字符串和真实值存放在变量中,输出时格式化处理 format='%10s班 %-4s同学,总分:%7.2f' value=(student['class'],student['name'],student['score']) print(format % value) #4.右对齐其他格式与上例同,只是格式化字符串和真实值存放在变量中,将格式化处理结果存放到变量再输出 format='%10s班 %-4s同学,总分:%7.2f' value=(student['class'],student['name'],student['score']) output=format % value print(output) #5.使用字典存放真实值,直接格式化输出 print('%(class)10s班 %(name)-4s同学,总分:%(score)7.2f' % student) #6.使字典存放真实值,用变量方式存放格式化字符串 format='%(class)10s班 %(name)-4s同学,总分:%(score)7.2f' output= format % student print(output)  ''' 输出结果:   小明同学   20190301班 小明  同学,总分: 597.50   20190301班 小明  同学,总分: 597.50   20190301班 小明  同学,总分: 597.50   20190301班 小明  同学,总分: 597.50   20190301班 小明  同学,总分: 597.50  '''