本教程将引导你掌握在Python中利用split()
方法来分割字符串,最终得到一个字符串列表。
在Python中操作字符串时,你可使用多种内置的字符串方法来生成修改后的字符串副本,例如转换为大写、对字符串排序等。.split()
就是其中之一,它可以将Python字符串分割成多个字符串,形成一个列表。我们将通过实例代码来深入了解其用法。
阅读完本教程,你将会了解:
.split()
方法的工作原理- 如何通过
sep
和maxsplit
参数自定义分割行为
让我们开始吧!
Python中split()
方法的语法
这是在任何有效Python字符串上使用split()
方法的基本语法:
string.split(sep, maxsplit)
# 参数:
sep, maxsplit
# 返回值:
一个字符串列表
其中,string
可以是任意有效的Python字符串。
sep
和maxsplit
参数都是可选的。
sep
代表你希望用于分割字符串的分隔符,必须是一个字符串。maxsplit
是一个整数,指定字符串最多分割的次数。
当你不提供可选参数时,将使用它们的默认值。
- 如果你没有明确指定
sep
的值,则默认使用空格作为分隔符。 - 如果你没有指定
maxsplit
的值,它将默认为-1,表示字符串将在所有出现的分隔符处被分割。
用更简洁的语言来说:
split()
方法会在字符串中出现由参数sep
指定的分隔符时进行分割,最多分割maxsplit
次。
既然我们已经了解了split()
方法的语法,接下来我们通过一些示例来演示它的具体用法。
将Python字符串分割成字符串列表
如果你的电脑上安装了 Python 3,你可以通过在Python REPL中运行以下代码片段来实践本教程中的示例。
要启动REPL,请从终端运行以下命令之一:
$ python
$ python -i
▶️ 你也可以在 techblik.com 的Python编辑器上尝试这些例子。
在这个例子中,py_str
是一个Python字符串。我们调用py_str
上的.split()
方法,但不传递任何参数,并观察输出结果。
py_str = "学习如何在Python中使用split()"
py_str.split()
# 输出
['学习如何', '在Python中', '使用split()']
如上所示,字符串在所有空格处被分割成了多个部分。
根据分隔符分割Python字符串
#1. 首先,我们使用双下划线__
作为分隔符来分割字符串py_str
。
py_str = "一切__都__很顺利"
py_str.split(sep='__')
# 输出
['一切', '都', '很顺利']
#2. 再看一个例子。这里,py_str
包含三个句子,每个句子都以句号.
结尾。
py_str = "我喜欢编程. Python很酷. 我正在学习Python"
py_str.split(sep='.')
# 输出
['我喜欢编程', ' Python很酷', ' 我正在学习Python']
▶️ 当我们在这个字符串上调用.split()
方法,并使用.
作为分隔符时,结果列表包含了三个句子,如上面的代码块所示。
#3. 我们来探讨几个问题:
- 如果分隔符从未在字符串中出现会怎样?
- 在这种情况下,分割会如何进行?
这是一个示例:
我们尝试在星号出现的地方分割py_str
py_str = "这一行没有星号。"
py_str.split(sep='*')
# 输出
['这一行没有星号。']
结果是,没有分割发生。
由于在这种情况下无法执行分割,所以结果列表只包含了整个字符串。
接下来,我们将看到如何对文本文件的内容使用split()
方法。
分割Python文件的内容
在Python中处理文本文件时,你可能需要根据分隔符来分割文件的内容,以便进行进一步处理。
这是一个示例文本文件:
with open('sample.txt') as f:
content = f.read()
str_list= content.split(sep='...')
for string in str_list:
print(string,end='')
下面的代码片段展示了如何对示例文本文件的内容使用分割。
- 上面的代码完成了以下任务:
- 使用上下文管理器打开并读取文本文件 “sample.txt”。
- 使用文件对象
f
的.read()
方法读取文件的内容。 - 根据分隔符省略号(…)将内容分割成列表
str_list
。
遍历str_list
来访问并打印每个字符串。
# 输出
这是一个示例文本文件
它包含关于
<a href="https://techblik.com.com/pcap-certification/">Python编程入门</a>的信息
根据2022年StackOverflow开发者调查
Python是最受欢迎的编程语言之一
所以你还在等什么?开始学习吧!
这是输出结果。
你可以尝试使用任何你选择的分隔符来分割文本文件的内容。
将Python字符串分割成块
当你将一个字符串分割一次时,你会得到两个部分;分割两次将得到三个部分。
📋 一般来说,当你将一个字符串分割K次时,你会得到K+1个部分。
如下图所示。
maxsplit
参数的作用(作者提供的图片)
py_str = "第一块 我是一个较大的块,第二块"
py_str.split(maxsplit=1)
# 输出
['第一块', '我是一个较大的块,第二块']
#1. 我们将maxsplit
设置为1。我们没有指定分隔符,所以默认情况下分割会在空格处进行。
尽管列表中第二部分包含空格,但由于分割现在受到maxsplit
值1的限制,所以没有进一步的分割发生。
py_str = "第一块 第二块 我是一个较大的第三块,即使我包含空格"
py_str.split(maxsplit=2)
# 输出
['第一块',
'第二块',
'我是一个较大的第三块,即使我包含空格']
#2. 我们将maxsplit
的值增加到2,并观察以下示例中分割是如何进行的。
和之前的例子一样,maxsplit
的值决定了分割的数量。我们得到了三个部分,在空格的第一次和第二次出现的地方被分割开。
#3. 如果将maxsplit
设置为大于分隔符出现次数的值,会发生什么?
py_str = "这里,只有,4个,逗号"
py_str.split(maxsplit=8)
# 输出
['这里,', '只有,', '4个,', '逗号']
在下面的代码块中,即使字符串只有四个逗号,我们仍将maxsplit
设置为8。
在这里,split
方法会将py_str
在所有四个逗号处进行分割。即使你尝试将maxsplit
设置为小于-1的值,例如-7,它也会在所有分隔符处分割。
接下来,我们将把我们所学到的知识结合起来,使用sep
和maxsplit
参数。
将Python字符串分割成由分隔符分割的块
py_str = "第一块, 第二块, 我是一个较大的第三块, 即使我包含一个,"
py_str.split(sep = ',',maxsplit=2)
# 输出
['第一块', ' 第二块', ' 我是一个较大的第三块, 即使我包含一个,']
#1. 假设我们需要在逗号,
出现时,将字符串py_str
分割成三个部分。为此,我们可以在方法调用中将sep
值设置为','
,并将maxsplit
的值设置为2。
从输出中可以看到,分割在前两次分隔符出现时发生了两次。
#2. 分隔符sep
不一定总是特殊字符。它可以是一系列特殊字符,例如我们之前使用的双下划线,或者甚至是一个子字符串。
py_str = "你需要学习数据结构, 学习算法, 还要学习更多!"
py_str.split(sep = '学习',maxsplit=2)
# 输出
['你需要', '数据结构, ', '算法, 还要学习更多!']
让我们将字符串'学习'
设置为sep
参数,看看如何针对不同的maxsplit
值进行分割。这里我们将maxsplit
设置为2。
py_str = "你需要学习数据结构, 学习算法, 还要学习更多!"
py_str.split(sep = '学习',maxsplit=-1)
# 输出
['你需要', '数据结构, ', '算法, 还要', '更多!']
#3. 如果你想在所有出现的字符串'学习'
处分割py_str
,我们可以通过设置sep = '学习'
来调用.split()
方法——不使用maxsplit
参数。这等价于将maxsplit
的值显式设置为-1,如下面的代码块所示。
我们看到分割在所有出现的“学习”处都发生了。
总结
我希望你现在已经掌握了如何使用.split()
方法处理Python字符串。
- 以下是本教程的总结:
- Python的内置
.split()
方法将字符串分割成字符串列表。 - 使用
string.split()
可以在所有默认分隔符(空格)处分割字符串。
使用string.split(sep,maxsplit)
可以在出现分隔符sep
时分割字符串,最多分割maxsplit
次。结果列表将有maxsplit+1
个项目。
下一步,你可以学习如何检查Python字符串是否是回文或字谜。