Python中用format函数格式化字符串的用法


Posted in Python onApril 08, 2015

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。
语法

它通过{}和:来代替%。
“映射”示例

通过位置

In [1]: '{0},{1}'.format('kzc',18) 
Out[1]: 'kzc,18' 
In [2]: '{},{}'.format('kzc',18) 
Out[2]: 'kzc,18' 
In [3]: '{1},{0},{1}'.format('kzc',18) 
Out[3]: '18,kzc,18'

字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
通过关键字参数

In [5]: '{name},{age}'.format(age=18,name='kzc') 
Out[5]: 'kzc,18'

通过对象属性

class Person: 
  def __init__(self,name,age): 
    self.name,self.age = name,age 
    def __str__(self): 
      return 'This guy is {self.name},is {self.age} old'.format(self=self)
In [2]: str(Person('kzc',18)) 
Out[2]: 'This guy is kzc,is 18 old'

通过下标

In [7]: p=['kzc',18]
In [8]: '{0[0]},{0[1]}'.format(p)
Out[8]: 'kzc,18'

有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如

In [15]: '{:>8}'.format('189')
Out[15]: '   189'
In [16]: '{:0>8}'.format('189')
Out[16]: '00000189'
In [17]: '{:a>8}'.format('189')
Out[17]: 'aaaaa189'

精度与类型f
精度常跟类型f一起使用

In [44]: '{:.2f}'.format(321.33345)
Out[44]: '321.33'

其中.2表示长度为2的精度,f表示float类型。

其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

In [54]: '{:b}'.format(17)
Out[54]: '10001'
In [55]: '{:d}'.format(17)
Out[55]: '17'
In [56]: '{:o}'.format(17)
Out[56]: '21'
In [57]: '{:x}'.format(17)
Out[57]: '11'

用,号还能用来做金额的千位分隔符。

In [47]: '{:,}'.format(1234567890)
Out[47]: '1,234,567,890'
Python 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
用Eclipse写python程序
Feb 10 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
python采集微信公众号文章
Dec 20 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
python基于property()函数定义属性
Jan 22 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 Python
简单介绍Python中的JSON模块
Apr 08 #Python
Python实现把xml或xsl转换为html格式
Apr 08 #Python
Python正则表达式匹配HTML页面编码
Apr 08 #Python
在Python中关于中文编码问题的处理建议
Apr 08 #Python
Python脚本实现格式化css文件
Apr 08 #Python
Python实现获取操作系统版本信息方法
Apr 08 #Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 #Python
You might like
DSP接收机前端设想
2021/03/02 无线电
咖啡的种类和口感
2021/03/03 新手入门
php 读取文件乱码问题
2010/02/20 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
基于php权限分配的实现代码
2013/04/28 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
laravel安装和配置教程
2014/10/29 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
javascript读取RSS数据
2007/01/20 Javascript
ext 代码生成器
2009/08/07 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
Python实现的栈(Stack)
2018/01/26 Python
python实现单向链表详解
2018/02/08 Python
python如何读写csv数据
2018/03/21 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
如何写一个自定义标签
2012/12/28 面试题
根叔历年演讲稿
2014/05/20 职场文书
领导班子四风表现材料
2014/08/23 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
Python OpenCV快速入门教程
2021/04/17 Python