字符串方法
字符串自带一套工具,专门干日常的活:整理别人输入的文字、找一个词、把一个词换成另一个、把一行拆成几段。这些工具叫方法。
什么是方法
方法是属于某个值的函数。调用时在值后面加一个点:name.upper()。括号不能省,里面没东西也要写。
1name = "wick"2print(name.upper())3print(name)4loud = name.upper()5print(loud)
WICK wick WICK
看输出的第二行:name 还是小写。字符串不能改(第 4 课),所以字符串方法从来不改原来的字符串,而是返回一个新的字符串。想留下结果,就存进一个变量。
大写和小写
1title = "the lamp at the end of the street"2print(title.upper())3print(title.title())4print(title.capitalize())5print("MiXeD CaSe".lower())
THE LAMP AT THE END OF THE STREET The Lamp At The End Of The Street The lamp at the end of the street mixed case
title() 把每个单词的首字母变大写;capitalize() 只把整句的第一个字母变大写。比较文字又不想管大小写时,常用 lower():"YES"、"Yes"、"yes" 都会变成 "yes"。汉字没有大小写,这几个方法碰到汉字就原样不动。
去掉两头的空格
别人输入时,常常不小心在前后多打了空格。strip() 去掉两头所有的空白(空格、制表符、换行都算);lstrip() 只去左边,rstrip() 只去右边。下面加了方括号,好让空格看得见:
1typed = " 小林 "2print("[" + typed + "]")3print("[" + typed.strip() + "]")4print("[" + typed.lstrip() + "]")5print("[" + typed.rstrip() + "]")
[ 小林 ] [小林] [小林 ] [ 小林]
中间的空格不动:" 灯火 小镇 ".strip() 是 "灯火 小镇"。
连着调用
每个方法都返回一个新字符串,所以可以接着在结果上再调一个方法。Python 从左往右做。
这段代码显示什么?
1answer = " YES "2print("[" + answer.strip().lower() + "]")
strip() 先得到 "YES",再对它调用 .lower(),得到 "yes"。
查找和计数
1sentence = "湖边的灯,桥边的灯"2print(sentence.find("灯"))3print(sentence.find("月亮"))4print(sentence.count("灯"))5print("桥" in sentence)6print("山" in sentence)
3 -1 2 True False
find() 返回第一次出现的下标,根本没有就返回 -1。count() 数出现了几次。只想知道「有没有」,用 in 最清楚:它给出 True 或 False。这三个都区分大小写。
替换
replace(旧, 新) 把每一处「旧」都换成「新」,结果是一个新的字符串。
1note = "磨坊路很黑。先点磨坊路的灯。"2print(note.replace("磨坊路", "橡树巷"))3print(note)4print(note.replace("。", ""))
橡树巷很黑。先点橡树巷的灯。 磨坊路很黑。先点磨坊路的灯。 磨坊路很黑先点磨坊路的灯
原来的 note 没变。换成 "",就是一个删掉东西的快办法。
这段代码显示什么?
1print("一二一二一".replace("一", "三")) replace 会换掉每一处,不只是第一处,所以三个「一」都变成「三」。
拆开和合起来
split() 把字符串切成几段,返回一个列表,就是输出里带方括号的那个(第 9 课细讲列表)。括号里写分隔符;不写就按空格切。join() 正好反过来:把几段粘起来,中间放的是调用它的那个字符串。
1line = "灯油,灯芯,灯罩"2parts = line.split(",")3print(parts)4print("Wick 今晚 去 点灯".split())5print(" + ".join(parts))
['灯油', '灯芯', '灯罩'] ['Wick', '今晚', '去', '点灯'] 灯油 + 灯芯 + 灯罩
注意 join 的顺序:「胶水」写在前面," + ".join(parts),不是 parts.join(...)。
在 f-string 里调方法
f-string 的 { } 里,只要能得出一个值的都能放,调方法也行:
1name = "wick"2street = " 磨坊路 "3print(f"{name.title()} 住在{street.strip()}")4print(f"{name.upper()} 有 {len(name)} 个字母")
Wick 住在磨坊路 WICK 有 4 个字母
常用方法一览
| 方法 | 作用 | 例子 | 结果 |
|---|---|---|---|
upper() | 全部大写 | "Hi".upper() | "HI" |
lower() | 全部小写 | "Hi".lower() | "hi" |
title() | 每个单词首字母大写 | "mill road".title() | "Mill Road" |
strip() | 去掉两头的空白 | " 你好 ".strip() | "你好" |
find(x) | x 第一次出现的下标,没有是 -1 | "点灯人".find("人") | 2 |
count(x) | x 出现几次 | "哈哈".count("哈") | 2 |
replace(a, b) | 把每个 a 换成 b | "猫".replace("猫", "狗") | "狗" |
split(x) | 在每个 x 处切开,得到列表 | "甲,乙".split(",") | ['甲', '乙'] |
x.join(parts) | 用 x 把几段粘起来 | "-".join(["甲", "乙"]) | "甲-乙" |
小技巧: 这些方法都不会改调用它的字符串。结果好像「没了」,就看看有没有把它存起来或者显示出来。
练一练
写好代码,点检查。提示随便看,实在想不出来再看答案。
整理英文名
✓有人随手输入了英文名。把它整理好,显示成下面这样。
Ada Lovelace
1raw = " aDA lOVELACE "2print(raw)
日期格式
✓把日期里的斜杠换成横线显示。
2026-11-01
1date = "2026/11/01"2print(date)
换成顿号
✓几种颜色现在用空格隔开,改成用顿号隔开,显示在一行里。
红、绿、蓝
1colors = "红 绿 蓝"2print(colors)
这一课学会了
- 方法用点来调用:
text.upper()。它返回一个新字符串,原来的不变。 upper、lower、title、capitalize改大小写;strip去掉两头的空白。- 方法可以连着调用:
text.strip().lower()。 find给出下标或-1,count计数,in给出True或False。replace(旧, 新)替换文字;换成""就是删掉。split把字符串切成列表;"胶水".join(parts)再粘回去。- f-string 的
{ }里也能调方法。