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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python如何生成各种随机分布图
Aug 27 Python
Flask框架web开发之零基础入门
Dec 10 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
django 消息框架 message使用详解
Jul 22 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
Django限制API访问频率常用方法解析
Oct 12 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
PHP生成随机密码类分享
2014/06/25 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
PHP代码优化技巧小结
2015/09/29 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
财务会计应届生求职信
2013/11/24 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
老公保证书范文
2014/04/29 职场文书
抵押贷款承诺书
2014/05/30 职场文书
节约能源标语
2014/06/17 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA