Administrator
Administrator
发布于 2026-10-31 / 0 阅读
0
0

Python 从入门到初级(03):字符串处理:清洗名称、拆分标签与展示邮箱

本篇是《Python 从入门到初级》第 3 / 20 篇。示例使用 Python 3.12 兼容语法,完整目录结构与数据见配套源码包。

用户填写的名称可能带空格,CSV 中的标签可能挤在同一列,日志中又需要把多个字段拼成一行。Python 字符串操作可以完成这些常见的文本整理。

原始字符串经过清洗、拆分与组合,形成可用文本

1. 先把文字当作有顺序的字符序列

字符串用引号包围,支持索引和切片。text[0] 取第一个字符,text[-1] 取最后一个,text[:2] 取前两个。切片通常包含左边界、不包含右边界。

索引从 0 开始是初学时最容易弄错的地方。长度为 3 的字符串,普通正索引是 0、1、2,取 [3] 会越界。

多行文字可以使用三引号。需要在文字里换行可以写 \n;反斜杠是转义机制的一部分,不一定代表路径分隔符。处理真实路径时,第 10 篇会使用 pathlib。

2. 完整示例:清洗名称和展示邮箱

保存为 lesson03.py:

raw_name = "  Alice  "
name = raw_name.strip().lower()
email = "alice@example.test"
username, domain = email.split("@", 1)
masked = username[:2] + "***@" + domain
tags = "python, linux, python"
words = tags.replace(" ", "").split(",")

print("标准化用户名:", name)
print("邮箱展示:", masked)
print("拆分后的标签:", words)
print("重新连接:", " / ".join(words))
print("原始字符串没有改变:", repr(raw_name))

运行后,标准化用户名为 alice,邮箱展示为 al***@example.test,标签列表为 ['python', 'linux', 'python']。重新连接后得到 python / linux / python。

这里的邮箱处理只是展示遮挡,不是匿名化方案,也没有验证邮箱是否合法。标签里的重复项暂时保留,第 5 篇再用集合处理。

3. 每个常用方法在做什么

写法 含义 易误解的地方
strip() 去掉两端的空白 不会删除中间全部空格
lower() 按规则转小写 不等于处理所有语言的业务同一性
split("@", 1) 最多拆一次 返回列表,可把两项分别赋值
replace(" ", "") 替换普通空格 不等于删除一切空白字符
" / ".join(words) 用分隔符连接字符串项 列表里需要是字符串

这些方法的定义可查 字符串方法文档。先根据数据约定选择操作,不要为了“干净”把具有业务意义的空格也删掉。

4. 字符串不会被原地修改

raw_name.strip() 返回新字符串,原来的 raw_name 没有改变。如果需要保留处理结果,就像示例一样赋给 name。

因此下面的写法只调用方法,却没有更新变量:

text = "  hello  "
text.strip()
print(repr(text))

预期仍显示两端空格。repr() 适合检查空格、换行等不容易直接看出的字符。

想更新名字可以写 text = text.strip()。这是重新赋值,不是把原字符串内部改掉。

5. 什么时候普通字符串方法就够用

文件名是否以 .csv 结束,可以用 endswith();一行中是否包含关键词,可以用 in;固定分隔符的数据,可以先考虑 split()。

但 CSV 允许字段内出现带引号的逗号,不能简单用 split(",") 解析真实 CSV。第 11 篇会使用 csv 模块。更复杂的格式匹配可以再学正则,不需要一上来就用正则处理一切文本。

6. 常见错误和练习

"数量=" + 3 会因为类型不同而失败。可以使用 f-string,或者明确转换为 str(3)。

" ".join([1, 2]) 同样不能自动拼接数字。先决定想要怎样展示,再把每项变成字符串。

练习:把 " Python; Linux; CSV " 整理成 python / linux / csv。先去掉两端空白、按分号拆分,再分别清理各项。当前还没学循环时,可以先对固定三项手动处理;学完第 7 篇后,再把它改成能处理任意数量的版本。


上一篇:变量、类型与输入输出:做一个温度换算器 · 系列目录 · 下一篇:条件判断:把运费和业务规则写成 if


评论