← 知识手册目录编码与文本 · GESP 1 / 3 / 4 级相关跳到完整速查 ↓

PYTHON KNOWLEDGE · 05

字符串、转义、切片与格式化

从不可变字符序列到检索、拆分、拼接、格式化和常用判断方法。

GESP 1GESP 3GESP 4

01 · FORMAL DEFINITION

正式定义

str 是不可变的 Unicode 字符序列。下标访问单个字符,切片生成新字符串;任何看似“修改字符串”的方法都会返回新对象。

02 · MUST KNOW

学完这一章,必须说清楚的规则

  1. 01

    下标从 0 开始,负下标从末尾开始;切片 s[start:stop:step] 不包含 stop,step 不能为 0。

  2. 02

    转义序列用于在字面量中表示换行、制表、引号、反斜杠或码点;原始字符串仍有末尾反斜杠限制。

  3. 03

    find 找不到返回 -1,index 找不到抛 ValueError;count 统计不重叠出现次数。

  4. 04

    split 把字符串拆成列表,join 用一个字符串连接可迭代对象中的字符串,strip 只删除两端字符。

  5. 05

    f-string 的格式说明可控制宽度、对齐、精度、进制和百分比;格式化不改变原值。

  6. 06

    isalpha/isdigit 等按 Unicode 定义,不只识别英文字母和 ASCII 数字。

03 · RUNNABLE EXAMPLE

可运行示例与因果解释

PYTHON
text = '  Alice,90  '
name, score = text.strip().split(',')
print(f'{name:<8} | {int(score):03d}')
print('Python'[::-1])

STRING LITERALS

字符串转义序列速查

表中写法用于普通字符串字面量。原始字符串 r'...' 会保留多数反斜杠,但不能以奇数个反斜杠结束。

Python 字符串转义序列
写法含义
\\反斜杠 \
\'单引号
\"双引号
\n换行 LF
\r回车 CR
\t水平制表
\b退格
\f换页
\v垂直制表
\a响铃
\ooo八进制值 ooo 的字符(最多三位)
\xhh十六进制值 hh 的字符(必须两位)
\N{name}按 Unicode 正式名称指定字符
\uxxxx16 位十六进制 Unicode 码点
\Uxxxxxxxx32 位十六进制 Unicode 码点
反斜杠 + 换行忽略物理换行,继续同一逻辑行

STR PUBLIC METHODS

字符串公开方法完整速查

以下覆盖 Python 3.12 str 的公开方法。所有方法都返回结果或判断值,不会原地改变字符串。

Python 3.12 str 公开方法
方法核心作用
capitalize首字符大写,其余字符小写
casefold用于无大小写文本匹配的强力小写化
center按宽度居中并填充
count统计非重叠子串次数
encode按编码方案转为 bytes
endswith判断是否以指定后缀结束
expandtabs把制表符展开为空格
find查找子串,找不到返回 -1
format按格式字段生成字符串
format_map使用映射提供格式字段
index查找子串,找不到抛 ValueError
isalnum是否全为字母或数字且非空
isalpha是否全为字母且非空
isascii是否所有字符码点都小于 128
isdecimal是否全为十进制数字字符且非空
isdigit是否全为数字字符且非空,范围比 isdecimal 广
isidentifier是否可作 Python 标识符的形状
islower是否有大小写字符且都为小写
isnumeric是否全为数值字符且非空,范围比 isdigit 广
isprintable是否全为可打印字符或为空串
isspace是否全为空白字符且非空
istitle是否符合标题式大小写
isupper是否有大小写字符且都为大写
join用当前字符串连接一组字符串
ljust按宽度左对齐并填充
lower转为小写
lstrip删除左端指定字符集合
maketrans创建 translate 使用的转换表
partition按首次分隔符拆成三元组
removeprefix存在指定前缀时删除一次
removesuffix存在指定后缀时删除一次
replace替换子串,可限制次数
rfind从右侧查找,找不到返回 -1
rindex从右侧查找,找不到抛 ValueError
rjust按宽度右对齐并填充
rpartition按最后一次分隔符拆成三元组
rsplit从右侧开始限制拆分次数
rstrip删除右端指定字符集合
split按分隔符拆成列表
splitlines按行边界拆分
startswith判断是否以指定前缀开始
strip删除两端指定字符集合
swapcase交换大小写
title转为标题式大小写
translate按转换表替换或删除字符
upper转为大写
zfill在符号后用 0 补齐宽度

COMMON PITFALLS

常见误区

  • 尝试 s[0] = 'A' 原地修改字符串
  • 把 strip('ab') 误解为删除完整子串 'ab'
  • find 返回 -1 后直接拿去当有效下标
  • 把字节长度与字符长度混为一谈

SCOPE & BOUNDARIES

适用边界

  • 正则表达式不在低等级字符串必修范围,但复杂模式匹配时应使用 re,而不是堆叠大量 split/find。
  • 面向用户的字符计数还可能涉及组合字符和字素簇,len 统计的是 Unicode 码点序列长度。