3.5. 格式化字符串

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

Python 中,字符串格式化使用与 Csprintf 函数一样的语法。

例 3.21. 字符串的格式化

>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k, v) 
'uid=sa'
整个表达式的值为一个字符串。第一个 %s 被变量 k 的值替换;第二个 %sv 的值替换。字符串中的所有其它字符 (在这个例子中,是等号) 按原样打印输出。

注意 (k, v) 是一个 tuple。我说过它们对某些东西有用。

您可能一直在想,做了这么多工作只不过是为了做简单的字符串连接。您想的不错,只不过字符串格式化不只是连接。它甚至不仅仅是格式化。它也是强制类型转换。

例 3.22. 字符串格式化与字符串连接的比较

>>> uid = "sa"
>>> pwd = "secret"
>>> print pwd + " is not a good password for " + uid      
secret is not a good password for sa
>>> print "%s is not a good password for %s" % (pwd, uid) 
secret is not a good password for sa
>>> userCount = 6
>>> print "Users connected: %d" % (userCount, )           
Users connected: 6
>>> print "Users connected: " + userCount                 
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
+ 是字符串连接操作符。
在这个简单例子中,字符串格式化实现与连接一样的结果。
(userCount, ) 是一个只包含一个元素的 tuple。是的,语法有一点奇怪,但是使用它的理由就是:显示地指出它是一个 tuple,而不是其他。实际上,当定义一个 list、tuple 或 dictionary 时,您可以总是在最后一个元素后面跟上一个逗号,但是当定义一个只包含一个元素的 tuple 时逗号是必须的。如果省略逗号,Python 不会知道 (userCount) 究竟是一个只包含一个元素的 tuple 还是变量 userCount 的值。
字符串格式化通过将 %s 替换成 %d 即可处理整数。
试图将一个字符串同一个非字符串连接会引发一个异常。与字符串格式化不同,字符串连接只能在被连接的每一个都是字符串时起作用。

如同 printfC 中的作用,Python 中的字符串格式化是一把瑞士军刀。它有丰富的选项,不同的格式化格式符和可选的修正符可用于不同的数据类型。

例 3.23. 数值的格式化

>>> print "Today's stock price: %f" % 50.4625   
50.462500
>>> print "Today's stock price: %.2f" % 50.4625 
50.46
>>> print "Change since yesterday: %+.2f" % 1.5 
+1.50
%f 格式符选项对应一个十进制浮点数,不指定精度时打印 6 位小数。
使用包含“.2”精度修正符的 %f 格式符选项将只打印 2 位小数。
您甚至可以混合使用各种修正符。添加 + 修正符用于在数值之前显示一个正号或负号。注意“.2”精度修正符仍旧在它原来的位置,用于只打印 2 位小数。

进一步阅读

淘宝时时彩 时时彩定位胆玩法技巧 m多宝时时彩被骗了 时时彩倍投银狐娱乐 娄底时时彩诈骗最新案
彩博士时时彩计划软件 时时彩技巧验证 江西时时彩历史开奖号码五星走势图 时时彩挂机软件教程 江西时时彩5星走势
时时彩qq群有托吗 11选5时时彩上竤彩玩 时时彩宝宝计划软件 时时彩杀号定胆软件 时时彩合差软件
重庆时时彩五星组合 重庆时时彩软件免费版lm0 网络时时彩骗局揭秘 江西时时彩五分彩 金诺时时彩软件怎么用
重庆幸运农场官网 牛彩和值推荐?2016福建快3派奖?福彩快3开奖结果福建?福建快3开奖结果天 云南时时彩玩法规则 广西快三开奖结果查询 浙江快乐12玩法介绍
广东11选5开奖信息 黑龙江十一选五玩法 重庆幸运农场直播 广东南粤风采26选5开奖 北京赛车庄家如何做假
青海快3走势 福建22选5开奖结果昨天 重庆幸运农场直播 深圳风采2017043 春天的故事歌词
辽宁11选5号码推存 pk10 河南快3推荐号 安徽音乐广播视频直播 贵州十一选五