本文最后更新于45 天前,在知识的增长过程中难免会有错误的理解,如有您发现有错误或者有不同的见解请发送邮件到thelistenerofrain@163.com或者留言~
Python 的字符串(str)是不可变序列类型,提供了大量强大而实用的内置方法。以下是 最常用、最核心的字符串方法分类总结,适合日常开发、算法题和数据处理使用。
🔤 一、大小写转换
| 方法 | 作用 | 示例 |
|---|
s.upper() | 转大写 | "hello".upper() → "HELLO" |
s.lower() | 转小写 | "HELLO".lower() → "hello" |
s.capitalize() | 首字母大写,其余小写 | "hello WORLD".capitalize() → "Hello world" |
s.title() | 每个单词首字母大写 | "hello world".title() → "Hello World" |
s.swapcase() | 大小写互换 | "HeLLo".swapcase() → "hEllO" |
✅ 常用于:输入标准化、忽略大小写比较。
🔍 二、查找与判断
查找位置
| 方法 | 说明 | 异常 |
|---|
s.find(sub) | 返回子串首次出现的索引,未找到返回 -1 | 不报错 |
s.rfind(sub) | 从右边开始找 | 不报错 |
s.index(sub) | 同 find,但未找到会 抛出 ValueError | 可能报错 |
Python编辑"hello".find("l") # 2
"hello".rfind("l") # 3
"hello".index("x") # ValueError!
判断开头/结尾
| 方法 | 作用 |
|---|
s.startswith(prefix) | 是否以某字符串开头 |
s.endswith(suffix) | 是否以某字符串结尾 |
Python编辑"file.txt".endswith(".txt") # True
"url".startswith("http") # False
内容判断(返回 True/False)
| 方法 | 作用 |
|---|
s.isalpha() | 是否全为字母(不含空格、数字) |
s.isdigit() | 是否全为数字字符(如 '123') |
s.isnumeric() | 更广义的“数字”(含中文数字、罗马数字等) |
s.isalnum() | 是否字母或数字(无空格、符号) |
s.isspace() | 是否全为空白字符(空格、\t, \n 等) |
s.islower() | 是否全为小写(且至少有一个字母) |
s.isupper() | 是否全为大写 |
Python编辑"abc".isalpha() # True
"123".isdigit() # True
"abc123".isalnum() # True
" ".isspace() # True
✂️ 三、修改与替换
| 方法 | 作用 | 示例 |
|---|
s.replace(old, new[, count]) | 替换子串 | "aabb".replace("a", "A") → "AAbb" |
s.strip([chars]) | 去除首尾指定字符(默认空白) | " hello ".strip() → "hello" |
s.lstrip([chars]) | 去除左边空白/字符 | "!!hello!!".lstrip("!") → "hello!!" |
s.rstrip([chars]) | 去除右边空白/字符 | " hello ".rstrip() → " hello" |
⚠️ strip 不是删除中间的字符!
🧩 四、分割与拼接
分割(返回列表)
| 方法 | 作用 |
|---|
s.split(sep=None, maxsplit=-1) | 按分隔符分割(默认按任意空白分割) |
s.rsplit(sep, maxsplit) | 从右边开始分割 |
s.splitlines(keepends=False) | 按行分割(处理 \n, \r\n 等) |
Python编辑"a,b,c".split(",") # ['a', 'b', 'c']
" a b ".split() # ['a', 'b'](自动去空格)
"line1\nline2".splitlines() # ['line1', 'line2']
拼接(用字符串连接列表)
| 方法 | 作用 |
|---|
sep.join(iterable) | 用 sep 连接可迭代对象中的字符串 |
Python编辑"-".join(["a", "b", "c"]) # "a-b-c"
"".join(['h','e','l','l','o']) # "hello"
✅ 这是拼接字符串最高效的方式!
🔢 五、格式化与对齐
| 方法 | 作用 | 示例 |
|---|
s.center(width[, fillchar]) | 居中对齐 | "hi".center(6, '-') → "-hi--" |
s.ljust(width[, fillchar]) | 左对齐 | "hi".ljust(5, '*') → "hi***" |
s.rjust(width[, fillchar]) | 右对齐 | "hi".rjust(5) → " hi" |
s.zfill(width) | 用 0 填充到指定宽度(常用于数字) | "42".zfill(5) → "00042" |
🔢 六、编码与特殊转换
| 方法 | 作用 |
|---|
s.encode(encoding='utf-8') | 字符串 → 字节(bytes) |
b.decode(encoding='utf-8') | 字节 → 字符串(注意:这是 bytes 的方法) |
ord(c) | 字符 → Unicode 码点(单字符) |
chr(i) | Unicode 码点 → 字符 |
⚠️ encode/decode 用于处理文件、网络传输等场景。
📌 七、其他实用方法
| 方法 | 作用 | 示例 |
|---|
s.count(sub) | 统计子串出现次数 | "banana".count("an") → 2 |
s.expandtabs(tabsize=8) | 将 \t 转为空格 | "a\tb".expandtabs(4) → "a b" |
s.partition(sep) | 分成 (前, 分隔符, 后) 三元组 | "a=b".partition("=") → ('a', '=', 'b') |
s.rpartition(sep) | 从右边分割 | "a=b=c".rpartition("=") → ('a=b', '=', 'c') |
✅ 最佳实践建议
- 拼接字符串用
join(),不要用 + 循环(效率低)。
- 清理输入用
strip() + lower()。
- 分割用
split(),默认按空白分割很智能。
- 判断内容用
isdigit() / isalpha() 等,比正则简单。
- 字符串不可变!所有方法都返回新字符串,记得赋值。
🧠 一句话记忆口诀:
查(find/index)、判(isxxx)、改(replace/strip)、分(split)、连(join)、转(upper/lower)、对(ljust/rjust)