马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 caodouhao 于 2017-8-1 15:17 编辑
字符串:格式化
上节课我们介绍了Python字符串的N多种奇葩方法的用法,但我们唯独漏了一个format()方法。
为何不把format()方法在上节课一起讲呢?因为小甲鱼觉得format()方法跟今天的话题如出一辙,都是关于字符串的格式化。
那什么是字符串的格式化,又为什么需要对字符串进行格式化呢?
举个小例子给大家听下你就明白了:“介个,某天小甲鱼召开了鱼C国际互联安全大会,到会朋友有来自世界各地各界的精英人士,有小乌龟啦,有喵星人啦,有旺星人啦,当然还有米奇和唐老鸭,哇晒,那气势简直跟小甲鱼开了个动物园一样……但是问题来了,尼玛真是鸡同鸭讲,驴唇不对马嘴, 风马牛不相及,到最后真是临表涕零,不知所云!但是最后聪明的小甲鱼还是把问题给解决了,其实也很简单,各界都找一个翻译就得了,统一都翻译成普通话,那么问题就结了……”
最后我们这个大会取得了卓越的成功并记入了吉尼斯动物大全,这是后话,咱就不提了。举这个例子是想跟大家说:格式化字符串,就是按照统一的规格去输出一个字符串。
如果规格不统一,就很可能造成误会,例如十六进制的10跟十进制的10跟二进制的10完全是不同的概念!字符串格式化,正是帮助我们纠正并规范这类问题。
列表和元组都有他们的方法,大家可能觉得列表的方法已经非常多了,其实字符串更多呢,而且很多都挺莫名其妙的,这里就给大家谈谈出各种奇葩的字符串的方法。
格式化操作符:%
>>> "{0} love {1}.{2}".format("I","FishC","com")
'I love FishC.com'
>>> "{a} love {b}.{c}".format("I","FishC","com")
Traceback (most recent call last):
File "<pyshell#1>", 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'
>>>
>>> "{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:.1f}{1}".format(27.658,"GB")
'27.7GB'
>>>
字符串格式化符号含义
%c 格式化字符及其 ASCII 码>>> "%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, 1+5)
'4 + 5 = 6'
>>>
%o 格式化无符号八进制数
%x 格式化无符号十六进制数>>> "%x" % 10
'a'
>>> "%X" % 10
'A'
>>>
%f 格式化浮点数字,可指定小数点后的精度
>>> "%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'
>>>
符号 | 说明 | %c | 格式化字符及其 ASCII 码 | %s | 格式化字符串 | %d | 格式化整数 | %o | 格式化无符号八进制数 | %x | 格式化无符号十六进制数 | %X | 格式化无符号十六进制数(大写) | %f | 格式化浮点数字,可指定小数点后的精度 | %e | 用科学计数法格式化浮点数 | %E | 作用同 %e,用科学计数法格式化浮点数 | %g | 根据值的大小决定使用 %f 或 %e | %G | 作用同 %g,根据值的大小决定使用 %f 或者 %E |
格式化操作符辅助命令
m.n m 是显示的最小总宽度,n 是小数点后的位数>>> "%5.1f" % 27.658
' 27.7'
>>>
m = 5, 即最小总宽度等于5, 27.7前面有一个空格。
>>> "%.2ef" % 27.658
'2.77e+01f'
>>>
n = 2, 即小数点后是2位。
>>> "%10d" % 27.658
' 27'
>>>
- 用于左对齐>>> "%-10d" % 27.658
'27 '
>>>
+ 在正数前面显示加号(+)
>>> "%+d" % 27.658
'+27'
>>>
>>> "%+d" % -27.658
'-27'
>>>
# 在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'>>> "%#o" % 10
'0o12'
>>>
>>> "%#X" % 108
'0X6C'
>>>
>>> "%#d" % 108
'108'
>>>
0 显示的数字前面填充 '0' 取代空格>>> "%010d" % 108
'0000000108'
>>>
>>> "%-010d" % 108
'108 '
>>>
最对齐,后边不能用0填充。
符号 | 说明 | m.n | m 是显示的最小总宽度,n 是小数点后的位数 | - | 用于左对齐 | + | 在正数前面显示加号(+) | # | 在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X' | 0 | 显示的数字前面填充 '0' 取代空格 |
Python 的转义字符及其含义
符号 | 说明 | \' | 单引号 | \" | 双引号 | \a | 发出系统响铃声 | \b | 退格符 | \n | 换行符 | \t | 横向制表符(TAB) | \v | 纵向制表符 | \r | 回车符 | \f | 换页符 | \o | 八进制数代表的字符 | \x | 十六进制数代表的字符 | \0 | 表示一个空字符 | \\ | 反斜杠 |
|