字符串处理 —— 日常最高频的文本操作
普通课约 50 分钟
本课导读
不管你将来做什么方向,程序处理的数据里一大半是文本:用户输入、表格单元格、网页内容、AI 的回答……全是字符串。本课集中学最高频的一批字符串操作:清洗(去空格、替换、统一大小写)、切片(取一段)、拆分(切成列表)。学完它们,"把乱糟糟的文本整理干净"就是你的新技能。
字符串方法:自带的工具腰带
字符串自带一批"方法"——用点号调用的专属操作(列表的 .append() 你已经用过,同一个语法家族):
最后一行是重要观念:字符串方法不修改原字符串,而是返回一个新的。想留住结果,就用变量接住:clean = raw.strip()。
真实场景里它们常常连环出手(链式调用,从左到右依次执行):
这个 .strip().lower() 组合,是数据清洗世界的"洗手液"——阶段 1 用 pandas 处理表格时,你会成千上万次地用到同款思路。
切片:从一串里取一段
上一课列表用 [索引] 取一个元素,其实还能用 [起点:终点] 取一段——这叫切片,字符串同样适用:
规则和 range 一脉相承:含头不含尾;省略起点=从头开始,省略终点=到尾结束;负数照旧从尾巴数。列表切片语法完全相同(nums[1:3]),一次学习两处通用。
split:把一句话切成一串词
.split(分隔符) 把字符串按分隔符切开,返回一个列表——字符串世界和列表世界的传送门:
第一个例子暗藏玄机:"小雨,28,上海,设计师" 正是 CSV 表格文件里一行数据的样子——split 就是你未来读表格数据的原始形态(阶段 1 的 CSV 课会正式相认)。
提示
in 对字符串同样好使:"错误" in log_text 判断一段文字里有没有出现某个词——配合 if,就是最朴素的文本筛选器。加上 len()(数字符数)你已经集齐字符串的"侦查三件套":in 查有没有、len 量多长、切片取哪段。
✍️ 练习
练习 1:整理签到名单
把乱糟糟的签到名字清洗干净:去两端空格、统一小写,打印整理后的名单。
✅ 参考答案
names = [" ALICE ", "bob ", " Charlie"]
for name in names:
clean = name.strip().lower()
print(clean)
列表遍历 + 链式清洗——两课的知识点在一行里会师。
练习 2:手机号打码
把手机号中间四位换成 ****,输出如 138****1111。用切片拼出来。
💡 提示
前三位是 phone[:3],后四位是 phone[-4:],中间用 "****",加号拼接或 f-string 都行。
✅ 参考答案
phone = "13800001111"
masked = phone[:3] + "****" + phone[-4:]
print(masked)
打码、取文件扩展名、截前 N 字做摘要——切片的日常全在这类"取头取尾"里。
练习 3:统计出勤(挑战)
考勤记录是一个逗号分隔的字符串。统计出勤("到")的次数和缺勤("缺")的次数。
💡 提示
先 split 成列表,再遍历计数(两个计数器,或者复习上一课的字典计数法)。
✅ 参考答案
record = "到,到,缺,到,缺,到,到"
days = record.split(",")
present = 0
absent = 0
for d in days:
if d == "到":
present = present + 1
else:
absent = absent + 1
print(f"出勤 {present} 次,缺勤 {absent} 次")
split 把字符串问题变成列表问题,然后循环 + if 收割——这条流水线値得刻进肌肉记忆。
随堂测验
1. s = " AI ",执行 s.strip() 之后,s 本身变成什么?
2. s = "abcdef",s[1:4] 是什么?
3. "a,b,c".split(",") 的结果是?
4. 清洗用户输入的邮箱(可能有多余空格和大小写混乱),最合适的组合是?
5. 取文件名 "report.xlsx" 的最后 4 个字符(扩展名 xlsx),写法是?
本课小结
- 清洗三板斧:
.strip()去空白、.lower()/.upper()统一大小写、.replace()替换——都返回新字符串,记得接住 - 切片
[起:止]:含头不含尾,省略即到头/到尾,负数从尾数;列表通用 .split()把字符串切成列表,是文本处理流水线的第一站(也是 CSV 的前世)- 侦查三件套:
in查有没有、len()量多长、切片取哪段
下一课是本单元压轴的语法:函数——把你写过的代码打包成可以反复使用的零件。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…