在 Python 语言当中,格式化字符串的常用方法有以下几种:
%格式化,类似于 C 语言当中的格式化方法。str.format()方法。f-string格式化字符串字面量。
下面先来回顾这几种常用方法的用法。
1.1 % 格式化
示例:
name = "Alice"
age = 30
greeting = "Hello, %s! You are %d years old." % (name, age)
print(greeting)
此种方法的缺点:
-
%右侧那个元组里面的值在类型或顺序发生变化时,那么程序可能会因为转换类型时发生
不兼容问题而出现错误。key = 'var' value = 1.234 formatted = '%-10s = %.2f' % (key, value) print(formatted) -
在填充格式化字符串模板之前,经常需要对填进去的值做一些处理,但这样一来,
整个表达式就会变得很长,难以阅读。pantry = {("apple", 8), ("orange", 10), ("banana", 3)} for i, (item, count) in enumerate(pantry): print("#%d: %-10s = %d" % (i+1, item, round(count))) -
如果想用同一个值来填充格式字符串里的多个位置,那么必须在%操作符右侧的元组中相应地多次重复该值。
template = '%s loves food. See %s cook.' name = 'Max' formatted = template % (name, name) print(formatted) -
把
dict写到格式化表达式里面会让代码变多。每个键都至少要写两次:
一次是在格式说明符中,还有一次是在字典中作为键。
另外,定义字典的时候,可能还要专门用一个变量来表示这个键所对应的值,
而且这个变量的名称或许也和键名相同,这样算下来就是三次了。soup = 'lentil' formatted = 'Today\'s soup is %(soup)s.' % {'soup': soup} print(formatted)
1.2 str.format()方法
str.format() 是 Python 2.7 和 3.0 引入的格式化方法,它更强大和灵活,支持位置参数、关键字参数等。
- 使用位置参数
greeting = "Hello, {0}! You are {1} years old.".format(name, age)
print(greeting)
- 使用关键字参数
greeting = "Hello, {name}! You are {age} years old.".format(name="Charlie", age=28)
print(greeting)
# 输出
# Hello, Charlie! You are 28 years old.
- 格式化数值
pi = 3.14159
formatted = "Pi is approximately {:.2f}".format(pi) # 保留两位小数
print(formatted)
# 输出:Pi is approximately 3.14
str.format() 无法解决 C 风格格式化字符串的第二和第四个问题。
1.3 f-string
f-strings 是 Python 3.6 引入的格式化方法,它使得格式化更加简洁和易读。通过在字符串前加上 f 或 F,可以直接在字符串中嵌入表达式。
- 语法:
f"格式字符串 {表达式}"
示例:
name = "Eve"
age = 35
greeting = f"Hello, {name}! You are {age} years old."
print(greeting)
输出:
Hello, Eve! You are 35 years old.
- 支持复杂表达式:
a = 5
b = 3
result = f"The sum of {a} and {b} is {a + b}."
print(result)
输出:
The sum of 5 and 3 is 8.
- 格式化数值:
pi = 3.14159
formatted = f"Pi is approximately {pi:.2f}" # 保留两位小数
print(formatted)
输出:
Pi is approximately 3.14
建议:在 Python 程序当中,尽量使用 f-string 格式化字符串。

被折叠的 条评论
为什么被折叠?



