python3中的格式化字符串f-string
f-string
f-string 是 python3.6 之后版本添加的,称之为字⾯量格式化字符串,是新的格式化字符串的语法。与其他格式化⽅式相⽐,它们不仅更易读,更简洁。
在此之前,格式化字符串主要有以下两种⽅式
%-formatting
str.format()
%-formatting
例如:
1 >>> name = 'tom'
2 >>> 'hello %s' % name
3'hello tom'
4 >>> PI = 3.141592653
5 >>> "%0.2f" % PI
6'3.14'
7 >>> name = "tom"
8 >>> age = 2
9 >>> action = "迅速"
10 >>> disposition = "懒"
11 >>> "猫的名字叫%s,今年%d岁了,抓⽼⿏⾮常%s,但是⾮常%s,⽩天总睡觉。"%(name, age, action, disposition)
12'猫的名字叫tom,今年2岁了,抓⽼⿏⾮常迅速,但是⾮常懒,⽩天总睡觉。'
可以看到,在参数较少的时候,代码还⽐较简单,但是当参数多的时候,代码看上去就会⽐较复杂难懂。
str.format()
Python2.6 开始,新增了⼀种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
1 >>> "{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
2'hello world'
3 >>>
4 >>> "{0} {1}".format("hello", "world")  # 设置指定位置
5'hello world'
6 >>>
7 >>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
8'world hello world'
9 >>>
10 >>> "⽹站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob")
11'⽹站名:菜鸟教程, 地址 www.runoob'
12 >>>
13 >>> # 通过字典设置参数
14 >>> site = {"name": "菜鸟教程", "url": "www.runoob"}
15 >>> "⽹站名:{name}, 地址 {url}".format(**site)
16'⽹站名:菜鸟教程, 地址 www.runoob'
17 >>>
18 >>> # 通过列表索引设置参数
19 >>> my_list = ['菜鸟教程', 'www.runoob']
20 >>> "⽹站名:{0[0]}, 地址 {0[1]}".format(my_list)  # "0" 是必须的
21'⽹站名:菜鸟教程, 地址 www.runoob'
使⽤str.format() 格式化代码⽐使⽤%-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然⾮常冗长。
f-string
f-string 格式化字符串以 f 开头,后⾯跟着字符串,字符串中的表达式⽤⼤括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
例如:
1 >>> name = 'tom'
2 >>> f'Hello {name}'# 替换变量
3'Hello tom'
4 >>>
5 >>> f'{1+2}'# 使⽤表达式
6'3'
7 >>>
8 >>> w = {'name': 'baidu', 'url': 'www.baidu'}
9 >>> f'{w["name"]}: {w["url"]}'
10'baidu: www.baidu'
11 >>>
12 >>> x = 1
13 >>> f'{x+1}'
14'2'
15 >>> f'{x+1=}'
16'x+1=2'
注意事项
当需要输出{}时,有两种⽅式
1. 在{}使⽤引号
2. 使⽤{{}}
1 >>> cat_name = "tom"
2 >>> # 使⽤单引号
3 >>> f"{'{cat_name:' + cat_name + '}'}"
4'{cat_name:tom}'
菜鸟教程python函数5 >>>
6 >>> # 使⽤{{}}
7 >>> f"{{cat_name:{cat_name}}}"
8'{cat_name:tom}'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。