Python从入门到高手9.3节: 利用字典进行格式化
目录
9.3.1 字符串的格式化
9.3.2 使用字典进行格式化
9.3.3 格式化操作方法的优缺点
9.3.4 让钱化作相思雨
9.3.1 字符串的格式化
在9.4节介绍了字符串的格式化,我们先来回顾下字符串格式化的定义,以及主要的格式化方法:
字符串的格式化是指按照特定的格式对字符串进行输出。对字符串进行格式化,主要有以下两种方法:一是通过操作符%,一是通过字符串类型的format方法。
在本节的内容中,着重讲解通过字典类型来对字符串进行格式化。
9.3.2 使用字典进行格式化
使用字典进行格式化操作时,主要是通过关键字占位符的方式来进行格式化。这里的关键字占位符对应于字典中的键名,键名出现在待格式化的字符串中,在对字符串进行格式化时,Python解释器自动将字符串中的关键字占位符替换为对应的键值。
(1) 使用%与字典进行格式化
格式化语法:
"%(key)s" % (dict)
key表示字典中的键名,s表示将关键字占位符格式化为字符串类型,同样可以将s换成其它的格式化类型,例如d,格式化为整型,f,格式化为浮点类型。
代码实例:
# __desc__ = 通过%操作符以及字典来进行字符串格式化book = {"author": "薯条老师","price": 9.9 }
content = "这本书的作者是%(author)s, 售价仅为%(price).2f" % (book)
# content的输出为:这本书的作者是薯条老师, 售价仅为9.90
字符串中的关键字占位符,必须能在字典中匹配出对应的键名,否则Python会抛出键名不存在的错误异常,同学们可以在交互模式中进行验证:
>>> "这本书的作者是%(author)s" % ({})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'author'
(2) 使用format与字典进行格式化
1. 在format方法中以关键字参数的形式传递字典对象
格式化语法:
"{param[key]}".format(param=dict)
字符串中待格式化的占位符与字典的形式一致,用{}括起来。在{}中以键名访问的形式输出对应的键值。在format方法中以关键字参数的形式传递字典对象。在Python中调用函数时,形如name=value的参数传递形式,即为关键字参数的传递语法。
代码实例:
# __desc__ = 通过format方法以及字典类型对字符串进行格式化
book = {"author": "薯条老师","price": 9.9 }
content = "这本书的作者是{book[author]}, 售价仅为{book[price]}".format(book=book)
"""
字符串中的字典名须与format方法中的参数名一致,
format方法中,操作符=左边的即为参数名,操作符右边的为实际的字典类型
"""
# 将参数名book改为arg
content = "这本书的作者是{arg[author]}, 售价仅为{arg[price]}".format(arg=book)
# content的输出为:这本书的作者是薯条老师, 售价仅为9.90
同样地,字符串中的关键字占位符,必须能在字典中匹配出对应的键名,否则Python会抛出键名不存在的错误异常。同学们可以继续在交互模式中进行验证。
2.使用**符号对字典进行解包
格式化语法:
"{key}".format(**dict)
{}中的key表示字典中的键名,在format方法中使用**对dict进行解包时,在format中会展开为name=value的关键字参数传递的形式。name为字典中的键名,value为键名所对应的键值。
也可以直接以关键字参数传递的形式来进行字符串格式化,实现的是同样的效果:
# __desc__ = 以关键字参数传递的形式来进行字符串格式化
book = {"author": "薯条老师","price": 9.9 }
content = "这本书的作者是{author}, 售价仅为{price}".
format(author=book["author"], price=book["price"])
# content的输出为:这本书的作者是薯条老师, 售价仅为9.90
9.3.3 格式化操作方法的优缺点
在讲解格式化操作的优缺点前,先举几个简单的例子:分别通过格式化符号以及字典类型来进行格式化。
代码实例:
# __desc__ = 通过格式化符号进行格式化book = {"author": "薯条老师","price": 9.9 }
content = "这本书的作者是%s, 售价仅为%.2f" % (book["author"], book["price"])
# content的输出为:这本书的作者是薯条老师, 售价仅为9.90
使用格式化符号进行格式化时,Python会进行类型检查,数据类型必须与格式化符号代表的类型一致或能隐式地转换为对应的数据类型,否则会抛出类型错误的异常信息。
# __desc__ = 数据类型必须一致或能隐式地转换为对应的类型book = {"author": "薯条老师","price": 9.9 }# 某程序员由于上班时浏览不良网站,粗心地将格式化符号%s写成了%d
content = "这本书的作者是%d, 售价仅为%.2f" % (book["author"], book["price"])"""
(1) 执行上文代码时,Python抛出了类型错误异常
(2) %d表示格式化为整型,但是传递的为字符串类型
字符串类型不能隐式地转换为整型
"""
代码实例:
# __desc__ = 通过字典类型进行格式化book = {"author": "薯条老师","price": 9.9 }
content = "这本书的作者是{author}, 售价仅为{price}" % (**book)
# content的输出为:这本书的作者是薯条老师, 售价仅为9.90
使用字典类型进行格式化操作时,不会进行类型检查,仅进行文本替换,与格式化操作相比,可读性更强。使用格式化符号的字符串:
"这本书的作者是%d, 售价仅为%.2f"
使用字典类型进行格式化的字符串:
"这本书的作者是{author}, 售价仅为{price}"
9.3.4 让钱化作相思雨
跟薯条老师学高级爬虫(JS逆向+安卓逆向),数据分析,数据科学,金融量化交易,以及机器学习+深度学习+大模型算法。坚持下去,你一定会成为高手。
薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。薯条老师的个人技术博客:Python神仙级入门教程-零基础学习数据分析,高级爬虫,机器学习+大模型算法。对本节教程有任何不懂的同学,亦可在评论区中进行评论。