无论是爬虫清洗数据、日志分析还是命令行工具,字符串处理都是 Python 开发者的日常。Python 的 str 类型自带几十个方法,配合 f-string 格式化,足以应付绝大多数文本场景。本文按"清洗 → 查找 → 拆分 → 格式化"的顺序系统过一遍。
1. 字符串基础与转义
字符串用单引号或双引号包裹,\n 换行、\t 制表符、\\ 反斜杠是常用转义。三引号可以保留多行原文:
s1 = '单引号'
s2 = "双引号里可以有 ' 单引号"
s3 = """多行
字符串"""
print(len(s3)) # 长度包含换行符
# 原始字符串:路径不用转义
path = r"C:\Users\ada\notes.txt"
print(path)
2. 清洗:大小写与去空白
用户输入往往带着多余的空格和大小写不统一,先清洗再比较是标准流程:
text = " Hello, Python World! "
print(text.strip()) # 去掉两端空白
print(text.lstrip(" H")) # 去掉左侧空格和 H
print(text.lower()) # 转小写
print(text.upper()) # 转大写
print(text.title()) # 每个单词首字母大写
3. 查找、替换与判断
s = "hello.py"
print(s.startswith("hello")) # True
print(s.endswith(".py")) # True
print(s.find(".")) # 5 找不到返回 -1
print(s.count("l")) # 2 出现次数
print(s.replace("hello", "hi")) # hi.py
print("12345".isdigit()) # True
print("abc".isalpha()) # True
print("abc123".isalnum()) # True
find 找不到返回 -1,而 index 会抛 ValueError,按需选择。
4. 拆分与拼接
split 按分隔符切分,join 把列表拼回字符串。处理 CSV、路径、URL 都靠它们:
data = "苹果,香蕉,橙子,葡萄"
fruits = data.split(",")
print(fruits) # ['苹果', '香蕉', '橙子', '葡萄']
print("-".join(fruits)) # 苹果-香蕉-橙子-葡萄
print(" ".join(["a", "b"])) # a b
# 只切前两刀
parts = "1-2-3-4".split("-", 2)
print(parts) # ['1', '2', '3-4']
# 按空白切分(任意数量空格都行)
print("a b\tc".split()) # ['a', 'b', 'c']
5. 格式化:f-string 实战
f-string 是 Python 3.6+ 推荐写法,支持表达式、对齐、精度和进制转换:
name, score = "Ada", 97.5
print(f"{name} 的得分是 {score:.1f} 分")
print(f"正确率:{score/100:.2%}") # 97.50%
print(f"{score:06.1f}") # 097.5 补零
# 对齐与填充
print(f"|{name:<10}|") # 左对齐
print(f"|{name:>10}|") # 右对齐
print(f"|{name:^10}|") # 居中
# 千分位与进制
print(f"{1234567:,}") # 1,234,567
print(f"{255:#x}") # 0xff
6. 实战:清洗一行日志
把上面学到的串起来——清洗并提取日志中的关键信息:
line = " ERROR 2026-07-06 10:23:45 磁盘空间不足 "
line = line.strip().lower()
level, rest = line.split(" ", 1)
date, _, msg = rest.partition(" ")
print(f"级别:{level}")
print(f"时间:{date}")
print(f"信息:{msg}")
# 输出:
# 级别:error
# 时间:2026-07-06
# 信息:10:23:45 磁盘空间不足
partition 返回 (分隔符前, 分隔符, 分隔符后) 三元组,比手动 find + 切片更安全。
💡 学习建议:字符串方法很多,不必死记。记住四个关键词——strip(清洗)、split/join(拆分拼接)、replace(替换)、f-string(格式化),用到时查文档即可,但 f-string 一定要练熟。