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之深入变量和引用对象
Sep 24 Python
Python实现截屏的函数
Jul 25 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Python3安装psycopy2以及遇到问题解决方法
Jul 03 Python
python里运用私有属性和方法总结
Jul 08 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
django form和field具体方法和属性说明
Jul 09 Python
Python基础教程之输入输出和运算符
Jul 26 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
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
物流司机岗位职责
2013/12/28 职场文书
协议书范本
2014/04/23 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
2014年检验员工作总结
2014/11/19 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS