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 18 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
python实现百度语音识别api
Apr 10 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
如何搭建pytorch环境的方法步骤
May 06 Python
python属于解释语言吗
Jun 11 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
Python偏函数实现原理及应用
Nov 20 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
使用php4加速网络传输
2006/10/09 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
Python中对列表排序实例
2015/01/04 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python操作csv文件实例详解
2017/07/31 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
公司行政助理岗位职责
2015/04/11 职场文书
生活委员竞选稿
2015/11/21 职场文书
资产移交协议书
2016/03/24 职场文书
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库