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 相关文章推荐
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
分享一个简单的python读写文件脚本
Nov 25 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
Python3.5集合及其常见运算实例详解
May 01 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
python如何保证输入键入数字的方法
Aug 23 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Python库安装速度过慢解决方案
Jul 14 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 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
URL Rewrite的设置方法
2007/01/02 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
List Installed Hot Fixes
2007/06/12 Javascript
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
js跳转页面方法总结
2014/01/29 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
JS中Location使用详解
2015/05/12 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python基础知识小结之集合
2015/11/25 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
Python实现通讯录功能
2018/02/22 Python
python如何使用unittest测试接口
2018/04/04 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python如何删除文件、目录
2020/06/23 Python
英国领先的游戏零售商:GAME
2019/09/24 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
2014学年自我鉴定
2014/02/23 职场文书
监考失职检讨书
2015/01/26 职场文书
《学会看病》教学反思
2016/02/17 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL