上节课我们介绍了字符串N多种奇葩方法的用法,但是我们唯独漏掉了format方法,那为何不把format方法和上节课的内容一起讲呢? 因为小甲鱼觉得format方法,跟今天的主题是如出一辙的,都是讨论字符串的格式问题。哎呀,那有些朋友听到格式化就来劲了,那格式化跟我们的硬盘格式化有关系吗? 没有关系的。 那什么是字符串的格式化呢?又为什么需要对字符串进行格式化呢? 我们举个小例子,给大家讲一下:
某天小甲鱼召开了鱼c国际安全大会,到会的朋友有来自世界各方各地的精英人士, 有这个小乌龟啦,有喵星人啦,有汪星人啦,当然还有这个米奇和唐老鸭,哇塞,那气势 简直就像小甲鱼开了个动物园一样,但是呢,那问题来了,那真是鸡同鸭讲,驴唇不对马嘴, 不知所云,但是呢,小甲鱼还是聪明,想办法把问题解决了,什么办法呢? 小甲鱼在各界找一个翻译,翻译成普通话之后,再开会,最后呢,大会完美举行成功。
举这个例子,是想跟大家说,格式化字符串,就是按照统一的规格去输出,成为一个字符串。如果规格不统一,就可能会造成误会。
例如说,十六进制的10,十进制的10 ,二进制的10完全就是不同的概念,
十六进制的10 对于 10进制是等于16 十进制的10 对于 10进制等于10 二进制的10 对于 10进制等于2
所以他们是完全不同概念。字符串格式化就是帮助我们纠正规范这类可能出现的问题。
format 方法,有两个参数,分别是 位置参数,关键字参数 位置参数:
>>> "{0} love {1}.{2}".format("I","FishC","com") 'I love FishC.com' 字段0,字段1,字段2,分别用'{}'括起来,表示'字段', 它通过位置参数"I","FishC","com"传递给我们的format方法, 然后再用format方法对字符串进行格式化处理,得到了我们最终的目标:'I love FishC.com'关键字参数
>>> "{a} love {b}.{c}".format("I","FishC","com") Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> "{a} love {b}.{c}".format("I","FishC","com") KeyError: 'a' >>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com") 'I love FishC.com'位置参数与关键字参数一起使用
>>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com") 'I love FishC.com' >>> "{0} love {b}.{c}".format("I",b="FishC",c="com") 'I love FishC.com' 【注意】同时使用时, 必须位置参数在前,关键字参数在后,否则会报错: >>> "{a} love {b}.{0}".format(a="I",b="FishC","com") SyntaxError: positional argument follows keyword argument如果想把{}打印出来,有没有办法呢?
>>> "{{0}}".format("不打印") '{0}' >>>看如下例子:
>>> '{0:.1f}{1}'.format(27.658,'GB') '27.7GB' 为什么不是打印27.658GB,而是27.7GB呢? 位置参数跟以前的不一样,化了点小妆, 后边多了一个冒号,在替换域中, 冒号:表示格式化符号的开始,后边接的就是格式化符号。下面开始讲字符串格式化符号含义及转义字符含义
字符串格式化符号含义
符号说明示例%c格式化字符及其ASCII码>>> '%c' % 97'a'>>> '%c %c %c' % (97,98,99)'a b c'>>> '%c,%c,%c' % (97,98,99)'a,b,c'%s格式化字符串>>> '%s' % 'I love FishC.com''I love FishC.com'%d格式化整数>>> '%d + %d = %d' % (4,5,4+5)'4 + 5 = 9'%o格式化无符号八进制数>>> '%o' % 10'12'%x格式化无符号十六进制数>>> '%x' % 10'a'%X格式化无符号十六进制数>>> '%X' % 10'A'%f格式化定点数,可指定小数点后的精度,默认6位小数>>> '%f' % 27.658'27.658000'%e用科学计数法格式化定点数>>> '%e' % 27.658'2.765800e+01'%E作用同%e,用科学计数法格式化定点数>>> '%E' % 27.658'2.765800E+01'%g根据值得大小决定使用%f或%e>>> '%g' % 27.658'27.658'>>> '%g' % 271111111111.6581111111111'2.71111e+11%G作用同%g,根据值得大小决定使用%F或%E>>> '%G' % 27.658'27.658'>>> '%G' % 271111111111.6581111111111'2.71111E+11格式化操作符辅助指定
符号说明示例m.nm显示最小总宽度,n是小数点后的位数>>> '%5.1f' % 27.658' 27.7'>>> '%.2e' % 27.658'2.77e+01'>>> 'd' % 5' 5'有9个空格在5前面-用于左对齐>>> '%-10d' % 5'5 '有9个空格在5后面+在正数前面显示加号(+)>>> '%+d' % 5'+5'>>> '%+d' % -5'-5'#在八进制数前面显示零0o,在十六进制前面显示0x或0X>>> '%#o' % 10'0o12'>>> '%#X' % 109'0X6D'>>> '%#d' % 10'10'0显示的数字前面填充0取代空格>>> '0d' % 5'0000000005'>>> '%0-10d' % 5'5 '有9个空格在5后面>>> '%0+10d' % -5'-000000005'字符串转义字符含义
符号说明示例\’单引号>>> print('\'')'\”双引号>>> print('\"')"\a发出系统响铃声>>> print('\a')\b退格符>>> print('1\bf')1f\n换行符>>> print('1\nf')1f\t横向指标符(TAB)>>> print('1\tf')1 f\v纵向制表符>>> print('1\vf')1f\r回车符>>> print('1\rf')1f\f换页符>>> print('1\f111111')1111111\o八进制代表的字符>>> print('\o1111')\o1111\x十六进制代表的字符>>> print('\x1111')11\0表示一个空字符>>> print('\01234')34\反斜杠>>> print('\\')\请问以下代码会打印什么内容?
>>> "{{1}}".format("不打印","打印") 运行结果: '{1}'如果想要显示Pi=3.14,format前边的字符串应该怎么填写?
''.format('Pi = ', 3.1415) >>> '{0}{1:.2f}'.format('pi= ',3.1415) 'pi= 3.14'编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF)
q = True while q: temp = input('请输入一个整数(输入Q结束程序):') if temp != 'Q': if temp.isdigit(): i = int(temp) print('十进制 -> 十六进制:',i,'->','%#x' % i) print('十进制 -> 八进制:',i,'->','%#o' % i) print('十进制 -> 二进制:',i,'->',bin(i)) else: print("抱歉,",end=" ") else: q = False ================== RESTART: C:/Users/ThinkPad/Desktop/6.py ================== 请输入一个整数(输入Q结束程序):108 十进制 -> 十六进制: 108 -> 0x6c 十进制 -> 八进制: 108 -> 0o154 十进制 -> 二进制: 108 -> 0b1101100 请输入一个整数(输入Q结束程序):F 抱歉, 请输入一个整数(输入Q结束程序):FS 抱歉, 请输入一个整数(输入Q结束程序):109 十进制 -> 十六进制: 109 -> 0x6d 十进制 -> 八进制: 109 -> 0o155 十进制 -> 二进制: 109 -> 0b1101101 请输入一个整数(输入Q结束程序):Q转载于:https://www.cnblogs.com/wanbin/p/9514696.html
相关资源:小甲鱼零基础入门学习Python(全96集).7z