1.%
基本格式化操作
name = "hello"
age = 18
text = "我是%s,今年%d" %(name,age)
# 我叫hello,今年18
当只有一个占位符的时候在%后可以是一个具体的值,或者是一个变量,当有多个的时候可以将值写入一个元组中,编译器会根据所写的顺序以及占位符的顺序进行一一匹配。
massage = "我叫%(name)s" % {"name": "hello"}
# 我叫hello
当%s中写入一个变量名时,需要用字典进行对应。
PS%的一个坑:当字符串中出现百分号时系统会将此百分号也会当做占位符,这种情况下一定在加%%以实现输出%
text = "这个%s我已经下载了90%了" %"内容"
# 会报错,系统会认识90%的%也是占位符,正确在下
text = "这个%s我已经下载了90%%了" %"内容"
# %%表示输出%
常用占位符:
%s | 字符串占位符 |
%d | 整形占位符 |
%f | 浮点数占位符 |
补充:保留几位小数
%.nf,n表示保留n位小数
print('保留2位小数:%.2f'%1.2345)
# 1.23
2.format
通过{}进行占位,在字符串后面加.format(参数),实现字符串的格式化
可以根据参数位置进行匹配实现格式化
text = "我叫{0},今年{1}岁,真实的姓名为{0}".format("hello", 18)
# 我叫hello,今年18岁,真实的姓名为hello(可以进行参数的复用)
在{}中不写参数,会对format中数据依次匹配
text = "我叫{},今年{}岁".format("hello", 18)
# 我叫hello,今年18岁({}中不写数字,无法实现参数的复用)
PS:若占位符数量多余format中的参数,则系统会报错;若占位符数量小于format参数数量,系统会匹配等价于占位符数量的参数,后续参数不会格式化入字符串中
text = "我叫{},今年岁".format("hello", 18)
print(text)
# 我叫hello,今年岁
占位符为{变量名}时需要format参数中的值与其变量名相对应
text = "我叫{n1},今年{n2}岁,真实的姓名为{n1}".format(n1="hello", n2=18)
# 我叫hello,今年18岁,真实的姓名为hello(可以实现参数的复用)
若{}中的变量名在format中无法找到相应的参数名会报错
3.f
在Python3.6后可以使用f进行字符串的格式化
在字符串引号前面加f表示进行字符串的格式化,字符串中{变量名}作为占位符
# python 3.6
name = "hello"
text = f"我叫{name},今年{16+2}岁"
# 我叫hello,今年18岁
# python3.8
text = f"我叫{name},今年{16+2=}岁"
# 我叫hello,今年16+2=18岁
在{变量名}占位符中可以添加内置函数例如
# 使用函数
name = hello
text = f"我是{name.upper()},今年18岁"
# 我是HELLO,今年18岁
# upper 转换为大写
补充:进制的转换
# 讲18转换为2进制
text = f"今年{18:#b}岁"
今年0b10010岁
# 讲18转换为8进制
text = f"今年{18:#o}岁"
今年0o22岁
# 讲18转换为16进制
text = f"今年{18:#x}岁"
今年0x12岁