如何在Python中使用split()方法
在本教程中,您将学习如何使用Python的split()方法将字符串拆分为字符串列表。
在使用Python strings时,您可以使用几个内置的字符串方法来获取字符串的修改副本,例如转换为大写、对字符串进行排序等等。其中一个方法是.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次。
现在我们已经了解了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,拆分也会在所有分隔符的出现处进行。
接下来,让我们将我们学到的知识整合起来,同时使用sep
和maxsplit
参数。
将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。