← Backend / Python / 基础专题

04_字符串编码与格式化

完成字符串索引、切片、清理、格式化与编码转换。

Python 基础专题 04:字符串、编码与格式化

学习目标:完成字符串索引、切片、清理、格式化与编码转换。

核心知识

str 是 Unicode 文本序列,写在单引号或双引号中;三引号可跨行。索引从 0 开始,负索引从末尾倒数;text[a:b] 包含起点、不包含终点。字符串不可变,replace、strip 等方法返回新字符串,不会原地修改。

raw = "  Python,Go  "
clean = raw.strip()
parts = clean.split(",")
print(parts[0], clean[-2:], clean[:6])
print(f"共有 {len(parts)} 门语言")
print("-".join(parts))

常见方法有 lower()、upper()、startswith()、find()、replace()。find() 找不到返回 -1,index() 找不到抛 ValueError。f-string 中 {value:.2f} 可控制小数显示位数,但显示格式不改变原值。反斜杠引入转义,例如 \n 换行;原始字符串 r"..." 常用于正则表达式,末尾不能只留一个反斜杠。

encode("utf-8") 把文本变成 bytes,decode("utf-8") 把字节还原成文本。len("中") == 1,而 len("中".encode("utf-8")) == 3。文件和网络边界必须约定编码,不能把字节长度当作“字数”。

逐步理解

字符串切片的右边界永远不包含,因此 "abcd"[1:3] 得到 "bc"。切片越界通常不会报错,而直接索引越界会报错。清理输入时先 strip() 再校验,避免把只含空格的标题当作有效内容。编码应只在文件、网络等边界转换,程序内部优先保持 str,不要反复在 str 与 bytes 间来回切换。

动手练习

练习:输入 " alice@example.com ",清理空格并判断是否以 "@example.com" 结尾。答案:email = raw.strip(); email.endswith("@example.com")。