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 相关文章推荐
python创建和使用字典实例详解
Nov 01 Python
通过C++学习Python
Jan 20 Python
Python实现二分查找算法实例
May 26 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python内置random模块生成随机数的方法
May 31 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
Python测试线程应用程序过程解析
Dec 31 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
python实现手势识别的示例(入门)
Apr 15 Python
如何在django中实现分页功能
Apr 22 Python
python基础之函数的定义和调用
Oct 24 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
简单了解django索引的相关知识
2019/07/17 Python
详解python pandas 分组统计的方法
2019/07/30 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python