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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
从零学python系列之教你如何根据图片生成字符画
May 23 Python
Django自定义分页与bootstrap分页结合
Feb 22 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
python实现最小二乘法线性拟合
Jul 19 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python在线和离线安装第三方库的方法
Oct 31 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
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python基于http下载视频或音频
2018/06/20 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
通信工程专业求职信
2014/06/04 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
小程序实现侧滑删除功能
2022/06/25 Javascript