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

在本教程中,您将学习如何使用Python的split()方法将字符串拆分为字符串列表。

在使用Python strings时,您可以使用几个内置的字符串方法来获取字符串的修改副本,例如转换为大写、对字符串进行排序等等。其中一个方法是.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次。

现在我们已经了解了Python split()方法的语法,让我们继续编写一些示例代码。

将Python字符串拆分为字符串列表

如果您在计算机上安装了Python 3,您可以通过在Python REPL中运行以下代码片段来编写本教程的代码。

要启动REPL,请从终端运行以下命令之一:

$ python
$ python -i

▶️ 您也可以在Geekflare’s Python editor上尝试这些示例。

在这个例子中,py_str是一个Python字符串。让我们在没有任何参数的情况下调用.split()方法并观察输出。

py_str = "Learn how to use split() in Python"
py_str.split()

# 输出
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

如上所示,字符串在所有空白字符的出现位置被拆分。

在分隔符出现的地方拆分Python字符串

#1. 作为第一个例子,让我们使用双下划线(__)作为分隔符拆分字符串py_str

py_str = "All__the__best"
py_str.split(sep='__')

# 输出
['All', 'the', 'best']

#2. 让我们看另一个例子。在这里,py_str有三个句子,每个句子以句号(.)结尾。

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# 输出
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ 当我们在此字符串上调用.split()方法,并使用'.'作为分隔符时,生成的列表有三个句子,如上面的代码单元格中所示。

#3. 让我们提出一些问题:

  • 当字符在字符串中不存在时会发生什么?
  • 这种情况下分割会如何进行?

这是一个示例:

我们尝试根据星号(*)的出现来分割py_str – 但星号并不存在。

py_str = "此行不包含星号。"
py_str.split(sep='*')

# 输出
['此行不包含星号。']

由于无法进行分割,结果列表包含整个字符串。

在下一部分中,我们将看到如何在文本文件的内容上使用split()方法。

分割Python文件的内容

当您处理文件时,您可能需要根据分隔符分割文件的内容以便更轻松地处理。

这是一个示例文本文件:

下面的代码片段演示了如何在示例文本文件的内容上使用分割。

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

以上代码执行以下操作:

  • 使用with上下文管理器打开并处理文本文件‘sample.txt’。
  • 使用文件对象f上的.read()方法读取文件的内容。
  • 将内容根据省略号(…)的出现分割为列表str_list
  • 循环遍历str_list以访问每个字符串并打印出来。

下面是输出结果。

# 输出
这是一个示例文本文件
它包含有关
开始使用programming in Python
根据2022 StackOverflow开发者调查
Python是最受喜爱的编程语言之一
那么你还在等什么?开始学习吧!

作为练习,您可以尝试根据任何分隔符拆分文本文件的内容。

将Python字符串拆分为块

当您将字符串拆分一次时,您将获得两个块;拆分两次将获得三个。

📋 通常,当您将字符串拆分K次时,您将获得K + 1个块。

如下所示。

#1. 我们将maxsplit设置为1。我们没有指定分隔符,所以默认情况下会在空格上进行分割。

py_str = "块#1 我是一个较大的块,块#2"
py_str.split(maxsplit=1)

# 输出
['块#1', "我是一个较大的块,块#2"]

即使列表中的第二个块包含空格,但由于拆分由maxsplit值为1控制,因此不会进行拆分。

#2. 让我们将maxsplit值增加到2,并观察以下示例的拆分方式。

py_str = "块#1 块#2 我是一个较大的块#3,尽管我包含空格"
py_str.split(maxsplit=2)

# 输出
['块#1',
 '块#2',
 "我是一个较大的块#3,尽管我包含空格"]

与前面的示例一样,maxsplit值决定了拆分的次数。我们得到三个块,在第一次和第二次出现空格后分割。

#3. 如果您将maxsplit设置为大于分隔符出现次数的值会发生什么?

在下面的代码单元中,当字符串只包含四个逗号时,我们将maxsplit设置为8。

py_str = "有, 只有, 4, 个逗号"
py_str.split(maxsplit=8)

# 输出
['有,', '只有,', '4,', '个逗号']

在这里,拆分方法会在所有四个逗号的出现处进行拆分。即使您尝试将maxsplit设置为小于-1的值,例如-7,拆分也会在所有分隔符的出现处进行。

接下来,让我们将我们学到的知识整合起来,同时使用sepmaxsplit参数。

将Python字符串分成块

#1。假设我们需要在逗号(,)出现的位置将字符串py_str分成三块。为了做到这一点,我们可以在方法调用中将sep值设置为“,”,将maxsplit值设置为2。

py_str = "块#1,块#2,我是一个大块#3,尽管我包含一个 ,"
py_str.split(sep = ',',maxsplit=2)

# 输出
['块#1', ' 块#2', '我是一个大块#3,尽管我包含一个 ,']

如输出中所示,分割在分隔符的前两个出现位置上发生了两次。

#2。分隔符sep不一定是特殊字符。它可以是一系列特殊字符,就像我们之前使用的双下划线一样,或者它甚至可以是一个子字符串。

让我们将字符串“learn”设置为sep参数,并看看在不同的maxsplit值下分割发生的情况。这里,我们将maxsplit设置为2。

py_str = "你需要学习数据结构,学习算法,学习更多!"
py_str.split(sep = 'learn',maxsplit=2)

# 输出
['你需要', ' 数据结构,', ' 算法,学习更多!']

#3。如果您想在字符串“learn”的所有出现位置上拆分py_str,我们可以通过将sep = 'learn'调用此.split()方法来实现,而不使用maxsplit参数。这相当于将maxsplit值显式设置为-1,如下面的代码单元格所示。

py_str = "你需要学习数据结构,学习算法,学习更多!"
py_str.split(sep = 'learn',maxsplit=-1)

# 输出
['你需要', ' 数据结构,', ' 算法,', ' 更多!']

我们可以看到在“learn”的所有出现位置上发生了拆分。

总结

希望您现在明白了如何使用Python字符串的.split()方法。

这里是本教程的摘要:

  • Python内置的.split()方法将字符串拆分为字符串列表。
  • 使用string.split()在默认分隔符空格上拆分string
  • 使用string.split(sep,maxsplit)在分隔符sep的出现位置上最多拆分字符串maxsplit次。结果列表有maxsplit+1项。

下一步,您可以学习如何check if Python strings are palindromes or anagrams

类似文章