赞
踩
在许多编程语言中都包含有格式化字符串的功能,Python中同样有这个功能。刚入门python的同学,特别是,没有系统的学习过python,而是学过别的语言,直接上手python的同学,怕是还不是很了解python强大的字符串格式化方法
下面就介绍Python的三种字符串格式化方法。
%
是内置对字符串进行格式化的格式符,格式化字符串时,python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。
print ('hello %s, I am %d year old' % ('Lilei', 6))
结果:
hello Lilei, I am 6 year old
'hello %s, I am %d year old'
为我们的模板。%s
为第一个格式符,表示一个字符串,%d
为第二个格式符,表示一个整数。(Lilei', 6)
的两个元素分别替换%s
和%d
的真实值。
在模板和tuple之间,有一个%号分隔,它代表了格式化操作。
整个'hello %s, I am %d year old' % ('Lilei', 6)
实际上构成一个字符串表达式。我们可以像一个正常的字符串那样,将它赋值给某个变量。比如:
a='hello %s and %s' % ('Lilei', 'Hanmeimei')
print(a)
第一种方法最直接方便,但是有时候,我们有很多的参数要进行格式化,这个时候,一个一个一一对应就有点麻烦了,于是就有了第二种,字典形式的,上面那种是tuple形式的。
print("hello %(name)s. I am %(age)d year old" % {'name':'Lilei', 'age':6})
可以看到,我们对两个格式符进行了命名。命名使用()括起来。每个命名对应词典的一个key。
这种字典形式的字符串格式化方法,有一个最大的好处就是,字典这个东西可以和json文件相互转换,所以,当配置文件使用字符串设置的时候,就显得相当方便。
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。实例:
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
这种就像是写一个函数一样,有好处,就是可读性很好,但是笔者还是喜欢第二种。
print("网站名:{name}, 地址 {url}".format(name="Python", url="www.python.com"))
# 通过字典设置参数
site = {"name": "Python", "url": "www.python.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['Python', 'www.python.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
输出结果:
print("网站名:{name}, 地址 {url}".format(name="Python", url="www.python.com"))
# 通过字典设置参数
site = {"name": "Python", "url": "www.python.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['Python', 'www.python.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
也可以向 str.format() 传入对象:
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的
结果:
value 为: 6
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。