Python_格式化字符串的3中方式
在Python 3.6之前,对字符串文本格式化可使用%-formatting和str.format()。
在Python 3.6之后,新增 f-string 方式,与其他格式化方式相比,它更易读,更简洁,不易出错,速度更快!
%-formatting
字符串对象具有使用%运算符的内置操作,可以用来格式化字符串。
# 字符串类型 name = "tom" print("猫的名字叫%s" % name) # 浮点数保留2位小数 PI = 3.141592653 print("%.2f" % PI)
上面的示例代码看起来足够易读,但是,一旦开始使用多个参数和更长的字符串,代码就将变得不太容易阅读。
name = "tom" age = 2 action = "迅速" disposition = "懒" print("猫的名字叫%s,今年%d岁了,抓老鼠非常%s,但是非常%s,白天总睡觉。"%(name, age, action, disposition))
str.format()
str.format()是对%-formatting的改进。它使用正常的函数调用语法,并且可以通过对要转换为字符串的对象的__format __()方法进行扩展。
使用str.format()替换大括号标记位置
name = "tom" age = 2 print("猫的名字叫{},今年{}岁了".format(name, age))
上面的方式,需要将变量与括号一一对应。
可以在 { } 中使用format传入参数的索引,解决一一对应问题。
name = "tom" age = 2 print("猫的名字叫{1},今年{0}岁了,今天星期{0}".format(age, name))
也可以在 { } 使用format定义的变量的方式,解决一一对应问题
name = "Tom" age = 3 print("猫的名字叫{n},今年{a}岁了".format(n=name, a=age)) # 可使用 ** 拆解字典将参数传入 cat = {"name": "tom", "age": 2} print("猫的名字叫{name},今年{age}岁了".format(**cat))
使用 str.format() 格式化方式的代码比使用 %-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然非常冗长。
f-strings
f-strings 是Python3.6+的一种新的字符串格式化方法,基本用法如下:
name = "tom" age = 4 # 在要格式化的字符串前加 f 就可直接在 {} 中使用变量 print(f"猫的名字叫{name},今年{age}岁了")
支持表达式
name = "tom" age = 2 print(F"猫的名字叫{name.upper()},今年{age}岁了")
数字操作
# 小数精度 PI = 3.141592653 print(f"Pi is {PI:.2f}") # 用0占位 print(f"{123:06d}")
注意事项
当需要输出{}时,有两种方式
1、在{}使用 字符串拼接方式
2、使用{{}}
cat_name = "tom" # 字符串拼接方式 print(f"{'{cat_name:' + cat_name + '}'}") # 输出结果:{cat_name:tom} # 使用{{}} print(f"{{cat_name:{cat_name}}}") # 输出结果:{cat_name:tom}