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}

 

 

 

 

 
 
 
 
posted @ 2019-10-19 19:54  码上测  阅读(11268)  评论(1编辑  收藏  举报