Python格式化字符串的四种方法
1.使用 %
运算符
-
%s
是一个字符串的占位符,而 “World” 是替换它的值print("Hello, %s!" % "World") # 输出:Hello, World!
-
你可以使用多个占位符
注意:多个变量占位,变量要用括号括起来,并按照占位的顺序填入
name = "小孤独" age = 16 print("My name is %s and I am %s years old." % (name, age)) # 输出:My name is 小孤独 and I am 16 years old.
-
Python中支持非常多的数据类型占位,最常用的如下:
格式符号 转化 %s 将内容转换成字符串,放入占位位置 %d 将内容转换成整数,放入占位位置 %f 将内容转换成浮点型,放入占位位置 示例:
name ="小孤独" age = 16 height = 1.56 message ="我是%s,我的年龄是:%d,我的身高是:%f米" %(name, age, height) print(message) # 输出:我是:小孤独,我的年龄是:16,我的身高是:1.560000米
2.str.format()
方法
-
Python 2.6+ 引入的更灵活的格式化方法,使用
{}
作为占位符 -
基本用法:
print("Name: {}, Age: {}".format("小孤独", 16)) # 位置参数 print("Name: {1}, Age: {0}".format(16, "小孤独")) # 索引参数 print("Name: {name}, Age: {age}".format(name="小孤独", age=16)) # 关键字参数
-
格式控制:
# 数字格式化 print("PI: {:.2f}".format(3.14159)) # 输出:PI: 3.14(保留两位小数) print("Hex: {:x}".format(255)) # 输出:Hex: ff(十六进制)# 对齐与填充 print("{:>10}".format("Hello")) # 右对齐,宽度10 → ' Hello' print("{:<10}".format("Hello")) # 左对齐,宽度10 → 'Hello ' print("{:*^10}".format("Hi")) # 居中并用*填充 → '****Hi****'# 千位分隔符 print("{:,}".format(1000000)) # 输出:1,000,000
-
引用对象属性或元素:
person = {"name": "小孤独", "age": 16} print("Name: {p[name]}, Age: {p[age]}".format(p=person)) # 输出:Name: 小孤独, Age: 16
3.f-strings
(格式化字符串字面量)
-
Python 3.6+ 引入,语法简洁高效,在字符串前加
f
或F
,变量直接嵌入{}
。 -
基本用法:
name = "小孤独" age = 16 print(f"Name: {name}, Age: {age}") # 输出:Name: 小孤独, Age: 16
-
表达式和函数调用:
name = "xiaogudu" age = 16 # 直接计算表达式 print(f"Next year's age: {age + 1}") # 输出:Next year's age: 17# 调用方法或函数 print(f"Name in uppercase: {name.upper()}") # 输出:Name in uppercase: XIAOGUDU
-
高级格式控制:
pi = 3.14159 print(f"PI: {pi:.2f}") # 输出:PI: 3.14 print(f"Hex: {255:x}") # 输出:Hex: ff print(f"Aligned: {'text':>10}") # 输出:Aligned: text
-
多行字符串:
name = "小孤独" age = 16 message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}" ) print(message) # 输出:Name: 小孤独 # Age: 16 # Square of Age: 256
4.模板字符串(string.Template
)
-
Python 标准库中的简单模板,通过
$
占位符替换,适合用户可控的输入(避免安全风险)from string import Template t = Template("Name: $name, Age: $age") print(t.substitute(name="小孤独", age=16)) # 输出:Name: 小孤独, Age: 16
5.总结对比:
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
% 格式化 | 简单,兼容旧代码 | 功能有限,易出错 | 旧项目或简单替换 |
str.format() | 功能强大,支持复杂格式 | 语法稍冗长 | 需要兼容 Python 2.6+ |
f-strings | 简洁高效,支持表达式 | 仅限 Python 3.6+ | 现代 Python 代码首选 |
string.Template | 安全,适合用户输入 | 功能最少 | 用户可控模板 |
如有不当之处,欢迎批评指正!