Kodewick
第 5 课,共 31 课目录

字符串方法

第 5 课,共 31 课 · 第 1 部分 · 基础 · 约 15 分钟

字符串自带一套工具,专门干日常的活:整理别人输入的文字、找一个词、把一个词换成另一个、把一行拆成几段。这些工具叫方法。

什么是方法

方法是属于某个值的函数。调用时在值后面加一个点:name.upper()。括号不能省,里面没东西也要写。

main.py
1name = "wick"2print(name.upper())3print(name)4loud = name.upper()5print(loud)
输出
WICK
wick
WICK

看输出的第二行:name 还是小写。字符串不能改(第 4 课),所以字符串方法从来不改原来的字符串,而是返回一个新的字符串。想留下结果,就存进一个变量。

大写和小写

main.py
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() 只去右边。下面加了方括号,好让空格看得见:

main.py
1typed = "   小林   "2print("[" + typed + "]")3print("[" + typed.strip() + "]")4print("[" + typed.lstrip() + "]")5print("[" + typed.rstrip() + "]")
输出
[   小林   ]
[小林]
[小林   ]
[   小林]

中间的空格不动:" 灯火 小镇 ".strip() 是 "灯火 小镇"。

连着调用

每个方法都返回一个新字符串,所以可以接着在结果上再调一个方法。Python 从左往右做。

先猜一猜

这段代码显示什么?

1answer = "  YES  "2print("[" + answer.strip().lower() + "]")

查找和计数

main.py
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(旧, 新) 把每一处「旧」都换成「新」,结果是一个新的字符串。

main.py
1note = "磨坊路很黑。先点磨坊路的灯。"2print(note.replace("磨坊路", "橡树巷"))3print(note)4print(note.replace("。", ""))
输出
橡树巷很黑。先点橡树巷的灯。
磨坊路很黑。先点磨坊路的灯。
磨坊路很黑先点磨坊路的灯

原来的 note 没变。换成 "",就是一个删掉东西的快办法。

先猜一猜

这段代码显示什么?

1print("一二一二一".replace("一", "三"))

拆开和合起来

split() 把字符串切成几段,返回一个列表,就是输出里带方括号的那个(第 9 课细讲列表)。括号里写分隔符;不写就按空格切。join() 正好反过来:把几段粘起来,中间放的是调用它的那个字符串。

main.py
1line = "灯油,灯芯,灯罩"2parts = line.split(",")3print(parts)4print("Wick 今晚 去 点灯".split())5print(" + ".join(parts))
输出
['灯油', '灯芯', '灯罩']
['Wick', '今晚', '去', '点灯']
灯油 + 灯芯 + 灯罩

注意 join 的顺序:「胶水」写在前面," + ".join(parts),不是 parts.join(...)。

在 f-string 里调方法

f-string 的 { } 里,只要能得出一个值的都能放,调方法也行:

main.py
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(["甲", "乙"])"甲-乙"

小技巧: 这些方法都不会改调用它的字符串。结果好像「没了」,就看看有没有把它存起来或者显示出来。

练一练

写好代码,点检查。提示随便看,实在想不出来再看答案。

练习 1

整理英文名

有人随手输入了英文名。把它整理好,显示成下面这样。

要显示
Ada Lovelace
exercise1.py
1raw = "   aDA lOVELACE  "2print(raw)
输出
点「运行」或按 Ctrl+Enter
练习 2

日期格式

把日期里的斜杠换成横线显示。

要显示
2026-11-01
exercise2.py
1date = "2026/11/01"2print(date)
输出
点「运行」或按 Ctrl+Enter
练习 3

换成顿号

几种颜色现在用空格隔开,改成用顿号隔开,显示在一行里。

要显示
红、绿、蓝
exercise3.py
1colors = "红 绿 蓝"2print(colors)
输出
点「运行」或按 Ctrl+Enter

这一课学会了

  • 方法用点来调用:text.upper()。它返回一个新字符串,原来的不变。
  • upper、lower、title、capitalize 改大小写;strip 去掉两头的空白。
  • 方法可以连着调用:text.strip().lower()。
  • find 给出下标或 -1,count 计数,in 给出 True 或 False。
  • replace(旧, 新) 替换文字;换成 "" 就是删掉。
  • split 把字符串切成列表;"胶水".join(parts) 再粘回去。
  • f-string 的 { } 里也能调方法。