Python2.6+ 增加了str.format函数,用来代替原有的'%'操作符。它使用比'%'更加直观、灵活。下面详细介绍一下它的使用方法。

下面是使用'%'的例子:
""
"PI is %f..." % 3.14159 # => 'PI is 3.141590...'
"%d + %d = %d" % (5, 6, 5+6) # => '5 + 6 = 11'
"The usage of %(language)s" % {"language": "python"} # => 'The usage of python'
格式很像C语言的printf是不是?由于'%'是一个操作符,只能在左右两边各放一个参数,因此右边多个值需要用元组或者字典来包括,不能元组字典一起用,缺乏灵活度。
同样的例子用format方法改写:
"PI is {0}...".format(3.14159) # => 'PI is 3.14159...'
"{0} + {1} = {2}".format(5, 6, 5+6) # => '5 + 6 = 11'
"The usage of {language}".format(language = "Python") # => 'The usage of Python'
是不是很直观?(当然,使用C语言的我也很喜欢前一种格式表达方式 :-) )
格式化字符串
"{named} consist of intermingled character {0} and {1}".format("data", "markup", \
named = "Formats trings")
format(10.0, "7.3g") # => ' 10'
"My name is {0} :-{{}}".format('Fred') # => 'My name is Fred :-{}'
注意第一行的'\',如果一个语句要换行,必须在结尾加上反斜线转义。
用'%'无法像这样将元组和字典混用。其实这里是命名参数,Python的一个特性。可以在定义数组的时候用*args, **kwargs语法展开集合和字典。需要注意,命名参数放在后面。
第二个语句表示format内置函数用来格式化单个值。
第三个语句表示了{}的转义,因为{}在被格式化字符串里是特殊字符,不能直接显示。转义方式是多嵌套一层。
使用属性和索引
"My name is {0.name}".format(open('out.txt', 'w')) # => 'My name is out.txt'
'{0.name}' 相当于调用对象的属性 open('out.txt', 'w').name
"My name is {0[name]}".format(dict(name='Fred')) # => 'My name is Fred'
使用索引也是可以的。
obj[key] 相当于 obj.____getitem____('key')
标准说明符(Specifiers)
写过C语言的程序员应该清楚printf的复杂。format也定义了很多标准的说明符,用来解释一个值的格式,然后插入字符串内。例如:
"My name is {0:8}".format('Fred') # => 'My name is Fred '
':'之后便是说明符了,上面例子中说明符只有一个'8'(minimumwidth),它表示插入的值宽度至少为8。'Fred'只有4,所以又加了4个空格。
说明符的详细格式为:
[[fill]align][sign][#][0][minimumwidth][.precision][type](不比C的printf更简洁啊!)
注意:'[]'表示该元素可选。所以,所有的格式说明符都是可选的!就像之前的例子,几乎都没有用这个(只是为了例子更清晰)。实际上,这些是很有用的。
我们一个个来看:
1、[fill]align 表示排列方式。当minimumwidth设置的比插入的值大时,就有了留白,就像上一个例子中的'My name is Fred '。默认把留白放在了右边,也就是说插入值默认是左对齐的。如果我们试试{0:>8},会发现结果变成了'My name is Fred'。
fill 表示用来填充留白的字符。只有在align指定了的情况下fill才有用! align可以是下面的标识:
2、sign 数字符号,只对数字有效。
3、# 显示数字的前缀表示几进制(0b, 0o, 0x)
4、0 用'0'填充留白。
5、minimumwidth 指定最小宽度,已经用过很多次了。
6、.precision 'precision'是一个十进制数字,表示显示小数点后几位。
7、type 值的类型:
①整型:
②浮点数
每个对象可以重写自己的格式化说明符,例如datatime类重写了后可以这样表示:
"Today is: {0:%a %b %d %H:%M:%S %Y}".format(datetime.now())
预先转换
':'之后是格式说明符,之前还可以加预先转换的标识
重写_format_方法
我们在格式化一个字符串时,首先格式化每个值,然后再插入字符串内。格式化值调用的就是format内置方法。format则是简单地调用该值的_format_方法。
def format(value, format_spec): return value.__format__(format_spec)
在object类内实现了_format方法,只是将本身用str()转换成字符串,然后将字符串传入内置的format方法,实际上就是调用转换为字符串后的format_方法。
class object:
def __format__(self, format_spec):
return format(str(self), format_spec)
int/float/str自身实现了_format_方法,前面已经介绍了它们各自的说明符。
结束语
还有一点儿是自定义Formatter,不过平常也用不到。留作下篇string模块源码解读的内容吧。建议有兴趣的朋友多看看Python标准库的源码,很有学习价值。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Python字符串格式化
# python3格式化字符串
# python格式化字符串%
# Python编程之字符串模板(Template)用法实例分析
# Python实现字符串格式化输出的方法详解
# Python中用format函数格式化字符串的用法
# Python字符串格式化的方法(两种)
# Python中字符串格式化str.format的详细介绍
# 使用Template格式化Python字符串的方法
# 放在
# 是一个
# 转换成
# 只对
# 就像
# 重写
# 可选
# 方法来
# 讲到
# 自己的
# 的是
# 都是
# 实现了
# 情况下
# 我也
# 还可以
# 多个
# 则是
# 都没
# 是指
相关文章:
桂林网站制作公司有哪些,桂林马拉松怎么报名?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
建站DNS解析失败?如何正确配置域名服务器?
网站制作公司排行榜,四大门户网站排名?
想学网站制作怎么学,建立一个网站要花费多少?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何快速生成橙子建站落地页链接?
江苏网站制作公司有哪些,江苏书法考级官方网站?
网站网页制作专业公司,怎样制作自己的网页?
如何在万网ECS上快速搭建专属网站?
如何快速查询域名建站关键信息?
在线制作视频网站免费,都有哪些好的动漫网站?
建站之星备案流程有哪些注意事项?
平台云上自助建站如何快速打造专业网站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
移民网站制作流程,怎么看加拿大移民官网?
c# 在ASP.NET Core中管理和取消后台任务
高端智能建站公司优选:品牌定制与SEO优化一站式服务
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
湖北网站制作公司有哪些,湖北清能集团官网?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
黑客如何利用漏洞与弱口令入侵网站服务器?
如何通过VPS搭建网站快速盈利?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何选择高效稳定的ISP建站解决方案?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何在腾讯云服务器快速搭建个人网站?
建站上市公司网站建设方案与SEO优化服务定制指南
如何通过服务器快速搭建网站?完整步骤解析
如何在云虚拟主机上快速搭建个人网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何快速搭建高效可靠的建站解决方案?
北京企业网站设计制作公司,北京铁路集团官方网站?
如何用y主机助手快速搭建网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何在云主机快速搭建网站站点?
建站之星安装需要哪些步骤及注意事项?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何快速搭建安全的FTP站点?
音响网站制作视频教程,隆霸音响官方网站?
如何零成本快速生成个人自助网站?
如何在Windows虚拟主机上快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。