day 03-2 Python基础-字符串格式化

发布时间 2023-12-21 16:41:08作者: 琳仔的后花园

2.字符串格式化

字符串格式化,使用跟便捷的形式实现字符串的拼接。

  • %
  • format (推荐)
  • f

2.1 %

2.1.1 基本格式化操作

# %s是占位符,也成为字符串占位符
# 后面空格加%
text = "我叫%s,今年18岁" %"linzai" #:%前面加上一个空格
print (text)

name = "linzai"
text = "我叫%s,今年18岁" %name
print (text)
# 多个占位符时
text = "我叫%s,今年%s岁" %("琳仔",18)#:多个占位符时,%后面一定要加括号,中间加逗号
print (text)

name = "linzai"
age = 18
text = "我叫%s,今年%s岁" %(name,age)#:%s是字符串占位符
print (text)

name = "linzai"
age = 18
text = "我叫%s,今年%d岁" %(name,age)#:%d是整型专用占位符
print (text)
# 如果对前面的占位符进行命名时,后面要有{},并在里面加引号
message = "%s 站在冷风中瑟瑟发抖,%s却在屋里吹空调" %("linzai", "老登")
message1 = "%(name)s 站在冷风中瑟瑟发抖,%(mane1)s却在屋里吹空调" %{"name": "linzai", "mane1": "老登"}
print(message, message1)
message = "我叫%s,今年%d岁。" #涉及到多个赋值时
text = message %("琳仔",18)
text1 = message %("猪猪",18)
text2= message %("仔仔",21)
print(text,text1,text2)

2.1.2 百分比

一旦字符串格式化中存现百分比的显示,请一定要加%%以实现输出%。

message = "%s,我的视频已经下载90%%了。" %"朋友"
print(message)

2.2 format (推荐)

message = "我叫张琳,今年18岁,毕业于北京大学。"
message = "我叫{0},今年{1}岁,毕业于{2}。" .format("琳仔", 18,"北京大学")
message = "我叫{},今年{}岁,毕业于{}。" .format("琳仔", 18,"北京大学") #{}中空值时,按照顺序依次填写
message = "我叫{},今年{}岁,真实姓名为{}。" .format("琳仔", 18,"琳仔")
message = "我叫{0},今年{1}岁,真实姓名为{0}。" .format("琳仔", 18) #{}中可以重复填写某个内容
print(message)
message = "我叫{n1}。" .format(n1="琳仔") #如果前面的占位符被命名,.format(命名="替换的名字)
message = "我叫{n1},今年{n2}岁,毕业于{n3}。" .format(n1="琳仔", n2=18,n3="北京大学") 
message1 = "我叫{n1},今年{n2}岁,真实姓名为{n1}。" .format(n1="琳仔", n2=18)
print(message)

message = "我叫{},今年{}岁。"
text = message.format("琳仔",18)
print(text)
message = "我叫{},今年{}岁。" # 可以制成模板,后续更加方便
text = message.format("琳仔",18)
text1 = message.format("猪猪",18)
text2= message.format("仔仔",21)
print(text,text1,text2)

2.3 f

text = "我喜欢跑步,跑完之后大汗淋漓"

action = "跑步"
text = f"我喜欢{action},跑完之后大汗淋漓。"
text1 = f"我喜欢{'跑步'},跑完之后大汗淋漓。"
print(text,text1)
age = 19
text = f"我的名字叫{name},今年{age}岁。"
text1 = f"我的名字叫{name},今年{19+2}岁。" #f可以在占位里面进行运算
text2 = f"我的名字叫{name},今年{19+2=}岁。" #运算里面有等于号
print(text,text1,text2)
结果输出:
我的名字叫喵喵,今年19岁。 
我的名字叫喵喵,今年21岁。 
我的名字叫喵喵,今年19+2=21岁。
# 进制转换
v1 = "我今年23岁"
v2 = f"我今年{23:#b}岁" # :#b转是转换成2进制
v3 = f"我今年{23:#o}岁" # :#o转是转换成8进制
v4 = f"我今年{23:#x}岁" # :#x转是转换成16进制
print(v1, v2, v3, v4)
print(v1, v2, v3, v4)
结果输出:
我今年23岁 
我今年0b10111岁 
我今年0o27岁 
我今年0x17岁
# f可以内置函数
name = "linzai"
text = f"我是{name.upper()},我今年19岁了。" # name全部转换成大写
print (text)