鱼C论坛

 找回密码
 立即注册
查看: 1648|回复: 0

[技术交流] 《Python零基础》015、字符串:格式化

[复制链接]
发表于 2017-8-1 15:15:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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" % 97
'a'
>>> 
>>> "%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 格式化无符号八进制数
>>> "%o" % 10
'12'
>>>
%x 格式化无符号十六进制数
>>> "%x" % 10
'a'
>>> "%X" % 10
'A'
>>> 
>>> "%X" % 160
'A0'
>>> 
%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
表示一个空字符
\\
反斜杠


评分

参与人数 1鱼币 +6 收起 理由
小甲鱼 + 6

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表