当前位置:首页>python>《Python 从入门到精通》043|常见字符串方法全梳理:split、join、replace 等

《Python 从入门到精通》043|常见字符串方法全梳理:split、join、replace 等

  • 2026-10-11 08:25:43
《Python 从入门到精通》043|常见字符串方法全梳理:split、join、replace 等

上一章我们已经把字符串的索引和切片讲透了。

你现在已经知道,字符串不是只能整段拿来用,它可以按位置取一个字符,也可以切出一小段内容。 但真实开发里,光靠索引和切片还不够。因为很多需求,不是让你硬数位置,而是让你直接去拆、去拼、去替换、去整理。

比如:

把一句话按逗号拆开 把多个单词重新拼成一句话 把错别字批量替换掉 去掉用户输入前后的空格 把英文全部转成大写或者小写 统计某个词出现了几次

这些事情,全都离不开字符串方法。

这一章,我们不讲太虚的概念,就直接把最常见、最实用、最值得你反复用的字符串方法梳理清楚。 你会发现,索引和切片像一把小刀,而字符串方法更像一整套工具箱。

一、为什么字符串方法这么重要

很多人学字符串时,容易有一个误区。

觉得只要会切片、会拼接,好像就差不多了。 其实远远不够。

因为现实里的文本处理,常常不是固定位置截取,而是更灵活的需求。

比如一行数据:

text = '张三,18,北京'

你要把它拆成三段。 这时候你当然可以硬切:

print(text[0:2])print(text[3:5])print(text[6:8])

但这很笨,而且一旦内容长度变化,代码立刻就废了。

而如果你会字符串方法,就可以更自然地写:

result = text.split(',')print(result)

一下就出来了。

所以字符串方法真正的价值,不是花哨,而是让文本处理更自然、更稳、更接近真实业务。

二、什么叫字符串方法

先看一个例子:

text = 'python'print(text.upper())

这里的 upper(),就是字符串方法。

你可以把方法理解成:

这个类型自带的专属功能

列表有自己的方法。 字典有自己的方法。 字符串当然也有自己的方法。

调用格式通常是:

字符串.方法名()

如果方法还需要额外信息,就把参数写到括号里。

比如:

text.replace('a', 'b')

意思就是:

把字符串里的 a 替换成 b

这一套写法,后面你会越用越多。

三、split():把一整段文字拆开

这是字符串里最常用的方法之一。

它的作用非常直接:

按某个分隔符,把字符串拆成列表。

看例子:

text = '苹果,香蕉,橙子'result = text.split(',')print(result)print(type(result))

输出:

['苹果', '香蕉', '橙子']<class 'list'>

注意,split() 的结果不是字符串,而是列表。

这非常重要。 因为很多文本数据,一开始就是一整行。 你只有先把它拆开,后面才能逐项处理。

比如用户信息:

user = '张三-18-北京'print(user.split('-'))

输出:

['张三', '18', '北京']

你看,这一下就从一整段文本,变成了一组清晰的数据。

四、split() 如果不写分隔符,会发生什么

如果你不写参数,split() 默认按空白字符拆分。

比如:

text = 'hello world python'print(text.split())

输出:

['hello', 'world', 'python']

这里的空白字符,不只是普通空格,也可能包括多个空格、换行、制表符这些。

比如:

text = 'hello   world'print(text.split())

输出依然会很干净:

['hello', 'world']

这就是默认 split() 的一个很舒服的地方。 它会帮你自动处理连续空白。

所以以后你碰到用户输入里空格不整齐、日志文本有空白间隔时,这招会很好用。

五、split() 在真实场景里到底有多常见

非常常见。

比如拆 CSV 风格的数据:

line = '1001,张三,95'print(line.split(','))

比如拆路径片段:

path = 'users/admin/docs'print(path.split('/'))

比如拆一句英文:

sentence = 'I love Python'print(sentence.split())

比如拆时间:

time_text = '2026-03-26'print(time_text.split('-'))

输出:

['2026', '03', '26']

你会发现,很多时候我们不是在处理字符串,而是在把一整段字符串还原成结构化数据。

而 split(),就是最常见的第一步。

六、split() 还能限制拆几次

这一点很多新手容易忽略,但很实用。

看例子:

text = 'a-b-c-d'print(text.split('-', 1))

输出:

['a', 'b-c-d']

这里的 1 表示:

最多拆 1 次

再看:

print(text.split('-', 2))

输出:

['a', 'b', 'c-d']

这个功能适合什么场景?

比如你只想把一行内容拆成前半部分和后半部分, 而后半部分里面即使还有同样的分隔符,也不想继续拆。

这在处理文件名、配置项、日志记录时都挺实用。

七、join():把多个字符串重新拼起来

如果说 split() 是拆, 那么 join() 就是拼。

它的作用是:

用某个连接符,把一组字符串拼成一个新的字符串。

看例子:

words = ['我', '爱', 'Python']result = ''.join(words)print(result)

输出:

我爱Python

如果你想中间加空格:

result = ' '.join(words)print(result)

输出:

我 爱 Python

如果你想用逗号连接:

result = ','.join(words)print(result)

输出:

我,爱,Python

你会发现,join() 和 split() 有点像一对搭档。

一个负责拆开。 一个负责拼回去。

八、为什么 join() 经常比加号拼接更好用

很多新手一开始会这样拼字符串:

a = '我'b = '爱'c = 'Python'result = a + b + cprint(result)

这当然没错。 但当你面对很多段字符串时,join() 会更自然。

比如:

words = ['2026', '03', '26']print('-'.join(words))

输出:

2026-03-26

你要是用加号一个个拼,不但啰嗦,而且数据一多就很笨。

所以有个很实用的经验:

已知是多个字符串,想按统一规则拼起来,优先想到 join()

九、join() 有一个很经典的坑

这个方法要求,参与拼接的元素必须都是字符串。

比如这样就没问题:

items = ['1', '2', '3']print(','.join(items))

但如果你这样写:

items = [1, 2, 3]print(','.join(items))

就会报错。

因为 join() 不会自动帮你把整数变成字符串。

正确写法要么提前转好,要么自己处理:

items = [1, 2, 3]items = [str(x) for x in items]print(','.join(items))

输出:

1,2,3

这一点以后你会经常碰到。 尤其是在把数字列表拼成日志、输出提示、文件内容时,很容易踩坑。

十、replace():把旧内容替换成新内容

这个方法也特别高频。

作用非常简单:

把字符串里的某部分内容替换成另一部分。

看例子:

text = '我喜欢Java'new_text = text.replace('Java', 'Python')print(new_text)

输出:

我喜欢Python

这里你要注意一件事:

replace() 不会原地修改原字符串。 它会返回一个新字符串。

所以正确写法通常是:

new_text = text.replace(...)

或者:

text = text.replace(...)

因为字符串本身不可变,这一点和前面讲的索引、切片逻辑是一致的。

十一、replace() 还能控制替换次数

比如:

text = 'ha ha ha'print(text.replace('ha', 'he', 1))

输出:

he ha ha

这里最后的 1 表示:

只替换 1 次

再看:

print(text.replace('ha', 'he', 2))

输出:

he he ha

这个功能在什么地方有用?

比如你只想替换第一个匹配项, 不想把整段文本里所有内容都替掉。

在清洗文本、修正标题、处理日志时,这种控制很方便。

十二、strip():去掉两边多余内容

这也是非常实战的一个方法。

最常见的用途,就是去掉字符串两边的空格。

text = '   hello python   'print(text.strip())

输出:

hello python

注意,strip() 默认只去两边,不会动中间。

比如:

text = '  hello   python  'print(text.strip())

输出是:

hello   python

中间那几个空格还在。

这个点一定别搞混。

strip() 是去头去尾,不是全局清理。

十三、lstrip() 和 rstrip()

如果你只想去左边,可以用 lstrip()。

text = '   hello'print(text.lstrip())

如果你只想去右边,可以用 rstrip()。

text = 'hello   'print(text.rstrip())

这两个方法没有 strip() 那么高频,但也很常见。 尤其是处理用户输入、文件内容、日志文本时,经常会顺手用上。

十四、strip() 不只能去空格

这一点很重要。

比如:

text = '---python---'print(text.strip('-'))

输出:

python

也就是说,strip() 可以指定要去掉什么字符。

再比如:

text = '***hello***'print(text.strip('*'))

输出:

hello

不过这里要注意,它去的是两边连续出现的指定字符,不是中间全部替换。

这一点和 replace() 是两回事。

十五、upper() 和 lower():大小写转换

这两个在英文文本处理中很常用。

upper() 转大写:

text = 'python'print(text.upper())

输出:

PYTHON

lower() 转小写:

text = 'PYTHON'print(text.lower())

输出:

python

这有什么用?

非常多。

比如你要比较两个英文字符串时,大小写不统一就很麻烦。 这时候通常会先统一大小写再判断。

a = 'Python'b = 'python'print(a.lower() == b.lower())

输出:

True

这在处理用户名、邮箱、标签、命令输入时都很常见。

十六、title():让每个单词首字母大写

看例子:

text = 'hello python world'print(text.title())

输出:

Hello Python World

这个方法在格式化英文标题、人名展示、界面文本整理时会用到。

虽然它不像 split()、replace() 那么高频, 但也属于比较顺手的常用工具。

十七、capitalize():让首字母大写

比如:

text = 'python is good'print(text.capitalize())

输出:

Python is good

它和 title() 的区别是:

capitalize() 只处理整个字符串开头title() 会处理每个单词开头

这个细节你区分一下就行。

十八、count():统计出现次数

这个方法很实用,而且特别直观。

比如:

text = 'banana'print(text.count('a'))

输出:

3

再比如统计某个单词出现几次:

text = 'python python java python'print(text.count('python'))

输出:

3

这在关键词统计、简单文本分析、日志筛查时都很好用。

十九、startswith() 和 endswith():判断开头和结尾

这两个方法下一章还会重点讲,但这里先串起来理解更顺。

看例子:

filename = 'report.pdf'print(filename.endswith('.pdf'))

输出:

True

再比如:

url = 'https://example.com'print(url.startswith('https://'))

输出:

True

这两个方法的好处在于,语义非常清晰。

你一看代码就知道:

这是在判断是不是以什么开头 是不是以什么结尾

比自己手动切片再判断,通常更自然。

二十、find():查找位置

这个方法也很常用。

text = 'I love Python'print(text.find('Python'))

输出:

7

意思是,Python 这段内容第一次出现的位置,从索引 7 开始。

如果找不到,会返回:

-1

比如:

print(text.find('Java'))

输出:

-1

这一点很重要。 因为它和直接报错不一样。find() 找不到时不会炸,而是用 -1 告诉你没找到。

二十一、split、join、replace 三兄弟,经常一起出现

这组方法在实际开发里特别常见。

比如一段标签文本:

text = 'Python,Java,Python,Go'

你想先拆开:

tags = text.split(',')print(tags)

然后把其中的 Java 改成 JavaScript:

tags = [tag.replace('Java', 'JavaScript') for tag in tags]print(tags)

最后再拼回去:

result = '|'.join(tags)print(result)

输出可能是:

Python|JavaScript|Python|Go

你看,这就是很典型的文本处理流程。

先拆 再改 再拼

很多字符串题,表面看五花八门,实际上就是在这几步之间来回组合。

二十二、一个特别真实的小案例:清洗用户输入

假设用户输入了这样一行信息:

text = '  张三 , 18 , 北京  '

现在你希望它变成更规整的数据。

第一步,先去掉两边空格:

text = text.strip()print(text)

第二步,按逗号拆开:

parts = text.split(',')print(parts)

你会发现,每一项两边还带着空格。 所以第三步,继续清理:

clean_parts = [item.strip() for item in parts]print(clean_parts)

输出:

['张三', '18', '北京']

这就是一个特别典型的字符串处理过程。

如果你不会这些方法,代码会写得非常别扭。 而一旦熟了,很多真实数据清洗都会变得很顺。

二十三、一个特别真实的小案例:批量拼通知文本

假设你有一个名单:

names = ['张三', '李四', '王五']

你想把它拼成一句通知:

message = '今天到场的同学有:' + '、'.join(names)print(message)

输出:

今天到场的同学有:张三、李四、王五

这就是 join() 最舒服的使用场景之一。

很多提示语、日志、导出文本、邮件内容,都会这么拼。

二十四、一个特别真实的小案例:清洗文件扩展名

比如用户传来一批文件名:

files = ['report.PDF', 'photo.JPG', 'data.CSV']

你想统一变成小写:

new_files = [name.lower() for name in files]print(new_files)

输出:

['report.pdf', 'photo.jpg', 'data.csv']

这就是大小写转换最典型的用法。

你会发现,方法本身不复杂。 难的是你能不能一看到问题,就自然想到该用哪个方法。

二十五、最容易犯的几个错

先说第一个。

很多人以为字符串方法会直接改原字符串。 比如:

text = 'python'text.upper()print(text)

输出还是:

python

因为你没有接收返回值。

正确写法要么是:

new_text = text.upper()

要么是:

text = text.upper()

第二个错,是分不清 strip() 和 replace()。

strip() 是去两边。replace() 是全文替换。

第三个错,是 join() 里混进了数字。

这个前面已经说过,join() 要求参与拼接的元素必须都是字符串。

第四个错,是 split() 完之后忘了结果已经是列表。 一拆开,类型就变了,后面操作思路也要跟着变。

二十六、别死记方法,要按用途去记

这一章方法不少,但你别用背单词的方式去记。

更好的方式是按用途分类。

想拆开内容,先想到 split()想重新拼起来,先想到 join()想替换旧文本,先想到 replace()想去掉两边杂质,先想到 strip()想统一大小写,先想到 upper() 和 lower()想统计出现次数,先想到 count()想判断开头结尾,先想到 startswith() 和 endswith()想找位置,先想到 find()

这样记,会比单独背名字顺很多。

二十七、练习题:这一章特别适合多敲几遍

下面这些练习非常典型,建议你自己动手。

1. 把 apple,banana,orange 拆成列表

text = 'apple,banana,orange'print(text.split(','))

2. 把列表 ['2026', '03', '26'] 拼成 2026-03-26

parts = ['2026', '03', '26']print('-'.join(parts))

3. 把 我喜欢Java 替换成 我喜欢Python

text = '我喜欢Java'print(text.replace('Java', 'Python'))

4. 去掉  hello python  两边的空格

text = '  hello python  'print(text.strip())

5. 把 python 转成大写,再把 PYTHON 转成小写

print('python'.upper())print('PYTHON'.lower())

6. 统计 banana 里 a 出现了几次

print('banana'.count('a'))

7. 判断 report.pdf 是否以 .pdf 结尾

print('report.pdf'.endswith('.pdf'))

8. 查找 Python 在 I love Python 中第一次出现的位置

print('I love Python'.find('Python'))

这些题你只要亲手敲一遍,字符串方法的感觉就会明显起来。

二十八、本章小结

这一章我们正式把字符串方法这套工具箱打开了。

你要带走的核心,不是机械背下所有名字,而是知道它们各自解决什么问题。

split() 负责拆join() 负责拼replace() 负责改strip() 负责清upper() 和 lower() 负责统一大小写count() 负责统计find() 负责找位置startswith() 和 endswith() 负责判断开头结尾

学会这些以后,你处理字符串就不再只是靠切片硬抠位置了。 你开始有了一套更自然、更接近真实需求的处理方式。

下一章我们继续讲 查找与判断:startswith、endswith、find、in 的用法。 那一章会把字符串里最常见的查找和判断动作单独讲透。

最新文章

随机文章