如何在 Python 中使用 split() 方法

本教程将引导你掌握在Python中利用split()方法来分割字符串,最终得到一个字符串列表。

在Python中操作字符串时,你可使用多种内置的字符串方法来生成修改后的字符串副本,例如转换为大写、对字符串排序等。.split()就是其中之一,它可以将Python字符串分割成多个字符串,形成一个列表。我们将通过实例代码来深入了解其用法。

阅读完本教程,你将会了解:

  • .split()方法的工作原理
  • 如何通过sepmaxsplit参数自定义分割行为

让我们开始吧!

Python中split()方法的语法

这是在任何有效Python字符串上使用split()方法的基本语法:

string.split(sep, maxsplit)

# 参数:
sep, maxsplit

# 返回值:
一个字符串列表

其中,string可以是任意有效的Python字符串。

sepmaxsplit参数都是可选的。

  • 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,它也会在所有分隔符处分割。

接下来,我们将把我们所学到的知识结合起来,使用sepmaxsplit参数。

将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字符串是否是回文或字谜。