跳到主要内容

字符串与格式化

Python 里的字符串操作很多,但真正常用、值得形成肌肉记忆的没有那么多。这篇分成两部分:

  • 字符串本身怎么处理
  • 字符串怎么格式化输出

基础操作

text = "hello"

print(len(text))
print(text[0])
print(text[1:4])
print(text.upper())
print(text.replace("ll", "LL"))

字符串是不可变对象,所以这些方法返回的是新字符串,不会原地改原对象。

常见拼接方式

first = "hello"
second = "world"

print(first + " " + second)
print(" ".join([first, second]))

如果是多个片段反复拼接,通常优先 join()

f-string

这是我默认最推荐的格式化方式:

name = "alice"
score = 95.1234

print(f"{name}: {score:.2f}")

优点:

  • 可读性高
  • 可以直接写表达式
  • 和变量关系很清楚

str.format()

name = "alice"
score = 95.1234

print("{}: {:.2f}".format(name, score))

现在它仍然常见,但如果没有兼容旧代码的压力,我更倾向直接用 f-string。

% 旧式格式化

name = "alice"
age = 20

print("%s is %d years old." % (name, age))

老项目里还会见到,但新代码一般不再优先写它。

常见格式控制

value = 3.14159

print(f"{value:.2f}") # 3.14
print(f"{value:8.2f}") # 宽度 8,保留 2 位小数
print(f"{42:04d}") # 0042

一个高频细节:round() 和格式化不是一回事

  • round(x, 2):改的是数值
  • f"{x:.2f}":强调输出格式

如果你需要“严格显示两位小数”,优先格式化字符串。

我更推荐的实践

关联阅读