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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
利用Python如何生成随机密码
Apr 20 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
Python生成器以及应用实例解析
Feb 08 Python
python使用Matplotlib画条形图
Mar 25 Python
python简单实现AES加密和解密
Mar 28 Python
详解Python3 基本数据类型
Apr 19 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
属性与 @property 方法让你的python更高效
Sep 21 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 Token(令牌)设计
2008/03/15 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
python中的tcp示例详解
2018/12/09 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
提高python代码运行效率的一些建议
2020/09/29 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
写给学生的新学期寄语
2014/01/18 职场文书
高考备战决心书
2014/03/11 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
2014年会策划方案
2014/05/11 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
酒会邀请函
2015/01/31 职场文书
《颐和园》教学反思
2016/02/19 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技