Python字符串格式化


Posted in Python onJune 15, 2015

在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。

模板

格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。

比如下面的例子:

print("I'm %s. I'm %d year old" % ('Vamei', 99))

上面的例子中,

"I'm %s. I'm %d year old" 为我们的模板。%s为第一个格式符,表示一个字符串。%d为第二个格式符,表示一个整数。('Vamei', 99)的两个元素'Vamei'和99为替换%s和%d的真实值。
在模板和tuple之间,有一个%号分隔,它代表了格式化操作。

整个"I'm %s. I'm %d year old" % ('Vamei', 99) 实际上构成一个字符串表达式。我们可以像一个正常的字符串那样,将它赋值给某个变量。比如:

a = "I'm %s. I'm %d year old" % ('Vamei', 99)

print(a)

我们还可以用词典来传递真实值。如下:

print("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})

可以看到,我们对两个格式符进行了命名。命名使用()括起来。每个命名对应词典的一个key。

格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"

可以用如下的方式,对格式进行进一步的控制:

%[(name)][flags][width].[precision]typecode

(name)为命名

flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

width表示显示宽度

precision表示小数点后精度

比如:

print("%+10x" % 10)

print("%04d" % 5)

print("%6.3f" % 2.3)

上面的width, precision为两个整数。我们可以利用*,来动态代入这两个量。比如:

print("%.*f" % (4, 1.2))

Python实际上用4来替换*。所以实际的模板为"%.4f"。

例子:

In [1]: "%(name)s is %(age)s" % {"name":"bob", "age": 12}

Out[1]: 'bob is 12'

In [2]: "%s is %s" % ("bob", "13")

Out[2]: 'bob is 13'

In [6]: "{0} is {1}".format("bob", "14")

Out[6]: 'bob is 14'

In [7]: "{name} is {age}".format(name="bob",age="15")

Out[7]: 'bob is 15'

总结

Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
如何运行Python程序的方法
Apr 21 Python
Python标准库内置函数complex介绍
Nov 25 Python
详解python函数传参是传值还是传引用
Jan 16 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
python标记语句块使用方法总结
Aug 05 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 #Python
Python2中的raw_input() 与 input()
Jun 12 #Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 #Python
Python3中的2to3转换工具使用示例
Jun 12 #Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 #Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 #Python
Python 3.x 新特性及10大变化
Jun 12 #Python
You might like
Smarty模板快速入门
2007/01/04 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Pycharm调试程序技巧小结
2020/08/08 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
学生拾金不昧表扬信
2014/01/21 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
好人好事演讲稿
2014/09/01 职场文书
家长通知书家长意见
2015/06/03 职场文书
医生行业员工的辞职信
2019/06/24 职场文书