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 help()函数用法详解
Mar 11 Python
学习python 之编写简单乘法运算题
Feb 27 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python实现爬山算法的思路详解
Apr 09 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
python SocketServer源码深入解读
Sep 17 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
python中selenium库的基本使用详解
Jul 31 Python
Python如何解除一个装饰器
Aug 07 Python
教你使用TensorFlow2识别验证码
Jun 11 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中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python回调函数用法实例详解
2015/07/02 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python实现排序算法解析
2018/09/08 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python selenium firefox使用详解
2019/02/26 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
《春雨》教学反思
2014/04/24 职场文书
动物科学专业求职信
2014/07/27 职场文书
领导干部保密承诺书
2014/08/30 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
mysql 索引合并的使用
2021/08/30 MySQL
Java中的继承、多态以及封装
2022/04/11 Java/Android
Python各协议下socket黏包问题原理
2022/04/12 Python