零基础入门学习Python(15)--格式化
2018-03-12 17:19
639 查看
前言
上节课我们介绍了字符串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.n | m显示最小总宽度,n是小数点后的位数 | >>> '%5.1f' % 27.658 ' 27.7' >>> '%.2e' % 27.658 '2.77e+01' >>> '%10d' % 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取代空格 | >>> '%010d' % 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') 1 f |
\t | 横向指标符(TAB) | >>> print('1\tf') 1 f |
\v | 纵向制表符 | >>> print('1\vf') 1f |
\r | 回车符 | >>> print('1\rf') 1 f |
\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
相关文章推荐
- 零基础入门学习Python(15)--格式化
- 【零基础入门学习Python笔记015】字符串:格式化
- Python学习入门基础教程(learning Python)--1.2.2 Python格式化输出基础 .
- 零基础入门学习Python(15):二进制存储 pickle 和异常处理
- Python学习入门基础教程(learning Python)--1.2.3 Python格式化输出百分比
- 零基础入门学习Python(8):字符串格式化
- Python学习入门基础教程(learning Python)--1.2.4 Python格式化输出科学计数 .
- Python学习入门基础教程(learning Python)--5.2 Python读文件基础
- Python学习入门基础教程(learning Python)--2.2 Python下的变量基础
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
- Python学习入门基础教程(learning Python)--6.4 Python的list与函数
- Python学习入门基础教程(learning Python)--5 Python文件处理
- Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析
- Python学习入门基础教程(learning Python)--6.3 Python的list切片高级
- Python学习入门基础教程(learning Python)--8.1 字典数据添加与删除
- Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
- Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程
- Python学习入门基础教程(learning Python)--3.3.1 Python下的布尔表达式
- Python学习入门基础教程(learning Python)--3.1Python的if分支语句
- Python学习入门基础教程(learning Python)--5.3 Python写文件基础