当前位置:   article > 正文

Python 字符串格式化详解_python字符串格式化

python字符串格式化

在许多编程语言中都包含有格式化字符串的功能,Python中同样有这个功能。刚入门python的同学,特别是,没有系统的学习过python,而是学过别的语言,直接上手python的同学,怕是还不是很了解python强大的字符串格式化方法
下面就介绍Python的三种字符串格式化方法。

1 %格式符

%是内置对字符串进行格式化的格式符,格式化字符串时,python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。

print ('hello %s, I am %d year old' % ('Lilei', 6))
  • 1

结果:

hello Lilei, I am 6 year old
  • 1

'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)
  • 1
  • 2

2 字典形式

第一种方法最直接方便,但是有时候,我们有很多的参数要进行格式化,这个时候,一个一个一一对应就有点麻烦了,于是就有了第二种,字典形式的,上面那种是tuple形式的。

print("hello %(name)s. I am %(age)d year old" % {'name':'Lilei', 'age':6})
  • 1

可以看到,我们对两个格式符进行了命名。命名使用()括起来。每个命名对应词典的一个key。
这种字典形式的字符串格式化方法,有一个最大的好处就是,字典这个东西可以和json文件相互转换,所以,当配置文件使用字符串设置的时候,就显得相当方便。

3 str.format()函数

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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这种就像是写一个函数一样,有好处,就是可读性很好,但是笔者还是喜欢第二种。

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" 是必须的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果:

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" 是必须的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

也可以向 str.format() 传入对象:

class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的
  • 1
  • 2
  • 3
  • 4
  • 5

结果:

value 为: 6
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/686002
推荐阅读
相关标签
  

闽ICP备14008679号