目录
最近我在写一个视频网站的爬虫,项目已经完成,中间有不少需要总结的经验。 |
从Python 3.6开始,f-Strings是格式化字符串的一种很棒的新方法。与其他格式化方式相比,它们不仅更具可读性,更简洁且不易出错,而且速度更快!
Python中的“老式”字符串格式化
在Python 3.6之前,你有两种主要的方式,将Python表达式嵌入到字符串文字中进行格式化:%-formatting和str.format()
。本文将首先介绍如何使用它们以及它们的局限性。
选项#1:%-formatting
这是Python格式化的OG,从一开始就存在于语言中。你可以在Python文档中阅读更多内容。请记住,文档不建议使用%格式,其中包含以下注意事项:
“这里描述的格式化操作表现出各种古怪问题,导致许多错误(例如未能正确显示元组和字典)。
使用较新的格式化字符串文字或
str.format()
方法有助于避免这些错误。这些替代方案还提供了更强大,灵活和可扩展的文本格式设置方法。”
如何使用 %-formatting
字符串对象具有使用该%
运算符的内置操作,可用于格式化字符串。这是实际的情况:
>>> name = "Eric"
>>> "Hello, %s." % name
'Hello, Eric.'
为了插入多个变量,你必须使用这些变量的元组。这是你要执行的操作:
>>> name = "Eric"
>>> age = 74
>>> "Hello, %s. You are %s." % (name, age)
'Hello Eric. You are 74.'
为什么%-formatting不好
上面看到的代码示例具有足够的可读性。但是,一旦开始使用多个参数和更长的字符串,你的代码将很快变得不那么易读。看起来有些混乱:
>>> first_name = "Eric"
>>> last_name = "Idle"
>>> age = 74
>>> profession = "comedian"
>>> affiliation = "Monty Python"
>>> "Hello, %s %s. You are %s. You are a %s. You were a member of %s." % (first_name, last_name, age, profession, affiliation)
'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.'
这种格式不是很好,因为它很冗长并且会导致错误,例如不能正确显示元组或字典。
选项#2:str.format()
Python 2.6中引入了这种完成工作的新方法。你可以查看《 Python字符串格式新手指南》以获取更多信息。
如何使用str.format()
str.format() 是对 %-formatting 的改进。它使用正常的函数调用语法,并且可以通过 format() 方法对被转换为字符串的对象进行扩展。
使用str.format()
,替换字段用花括号标记:
>>> "Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'
你可以通过引用变量的索引以任何顺序引用它们:
>>> "Hello, {1}. You are {0}.".format(age, name)
'Hello, Eric. You are 74.'
但是,如果你插入变量名,则会获得以下额外的好处:能够传递对象,然后在花括号之间引用参数和方法:
>>> person = {
'name': 'Eric', 'age': 74}
>>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age']