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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
python算法学习之基数排序实例
Dec 18 Python
python数据结构之二叉树的建立实例
Apr 29 Python
python实现员工管理系统
Jan 11 Python
Python快速查找list中相同部分的方法
Jun 27 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
Python使用while循环花式打印乘法表
Jan 28 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
在django模板中实现超链接配置
Aug 21 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 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
php mysql数据库操作分页类
2008/06/04 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
PHP输出时间差函数代码
2013/01/28 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
如何通过python检查文件是否被占用
2020/12/18 Python
python接口自动化框架实战
2020/12/23 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
C/C++有关内存的思考题
2015/12/04 面试题
营销与策划应届生求职信
2013/11/04 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
端午节寄语2015
2015/03/23 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android