第 03 课 · 入门 · 18 分钟

Python 字符串方法

用日常最常用的字符串方法清理、拆分、连接和检查文本。

strip 与大小写split 与 joinreplace 与切片

订单表单送来的名字是「 MAYA chen 」,后面还挂着一个换行,因为客人怎么说话就怎么打字。查价之前,这段文字得先洗干净,又不能把原件弄坏。哪些方法会返回新字符串,又该怎么留住原来的值?

真实世界里的文本往往很乱:多余空格、大小写不一致,多个字段挤在一个字符串里。字符串方法会返回新的字符串或列表,让你搭建一条清晰的文本清理流程,同时不改变原值。 你还会规范化一组杂乱输入,并在检查后解包一条记录。

先清理两端

strip() 会去掉字符串两端的空白。lower() 和 upper() 改变大小写。这些方法都返回新字符串,不会修改原字符串。需要同时处理时,可以链式调用。

raw = "  MAYA  "
clean = raw.strip().lower()
print(clean)
print(raw)

链式调用字符串方法

拆分与连接

split(separator) 把字符串变成字段列表。join(iterable) 把一个字符串集合合并成一个字符串。join 前面的字符串就是分隔符。

row = "拿铁,4.5,2"
fields = row.split(",")
print(fields)
print(" | ".join(fields))

类似 CSV 的文本

替换与切片

replace(old, new) 会替换所有匹配的子串。切片读取一段字符:text[0:4] 从索引 0 开始,到索引 4 之前结束。负索引从末尾开始计数。

text = "hello world"
print(text.replace("world", "Python"))
print(text[0:5])
print(text[-5:])

替换与切片

比较前先规范化

用户输入常有额外空格和大小写差异。比较前先规范化:逐项 strip()、转小写,再用清晰的分隔符连接。如果显示需要保留大小写,就把原始值和规范化后的键分开保存。

raw = "  Latte, Tea ,Mocha "
items = [part.strip().lower() for part in raw.split(",")]
print(items)
print(" | ".join(items))

先清理每个字段,再连接

先分割、检查,再解包

split() 把一条记录拆成字段,解包再给每个字段命名。切片可以取出年份、月份这类固定位置。处理真实数据前先检查字段数量,少一个字段就会触发 ValueError。

record = "2026-10-28|latte|4.50"
parts = record.split("|")
if len(parts) == 3:
    date, name, price = parts
    print(date[:4], date[5:7], date[8:10])
    print(name.capitalize(), float(price))
else:
    print("invalid record")

解包前先检查字段数量

先检查形状,再转换

startswith()、endswith() 和 removeprefix() 可以在转换之前检查文字的结构。先转换再验证,会把两种失败混在一起:数据格式不对,以及 ValueError。先确认货币符号,再去掉它,最后转换。形状不对时返回清晰的错误,不要让 float() 决定错误信息。

raw = "$4.50"
if raw.startswith("$"):
    amount = float(raw.removeprefix("$"))
    print(f"{amount:.2f}")
else:
    print("缺少货币符号")

先验证前缀,再转换

本课要点

  • 字符串方法返回新值,原字符串不会被修改。
  • strip 去掉两端空白,replace 替换精确的子串。
  • split 把文本拆成字段,join 把字段重新合成文本。
  • 切片不包含结束索引对应的字符。
  • 比较用户输入前,先统一大小写和空白。
  • 在调用 float() 或 int() 之前,先验证文字的格式。

常见错误

  • 对列表直接调用 strip,而不是对列表中的每个字符串调用。
  • 对数字列表调用 join,却没有先把数字转成字符串。
  • 以为 text[1:3] 会包含索引 3 的字符。
  • 先 split 再忘记逐项 strip,字段里留下多余空格。
  • 对仍然含有货币符号的文字调用 float()。
轮到你

清理一个带空格的姓名,拆分逗号分隔的订单,再用短横线把字段连接起来。

动手试试

改改变量、先预测输出,再运行代码。第一次点击“运行代码”时会下载 Python 运行时,可能需要几秒钟。

浏览器内 Python本地运行 · 无需账号
首次运行会从 CDN 下载 Pyodide。修改后点击“运行代码”。

练习本课

12 道题,作答后立即看到解释。

查看 12 道题答案开始练习
← 变量与类型条件判断 →