Python split() 语法
split() 是 Python 字符串的一个方法,它会根据某个分割符 “从左到右” 来将字符串分割成多个子串,然后返回包含这些子串的列表。
语法:
str.split(separator=None, maxsplit=-1)说明:
split() 方法接收以下 2 个参数。
separator(可选,默认值:None):用于分割的符号。如果 separator 省略,则按任意空白字符(空格、换行、制表符等)分割,其中连续空白符会被视为单个分隔符,并且字符串开头和末尾的空白字符会被忽略maxsplit(可选,默认值:-1):一个非负整数,指定最大分割次数。如果省略 maxsplit 参数或设置为 -1,则表示不限制分割次数。
注意:
- split() 方法不会修改原字符串,而是返回一个列表,该列表保存的是所有被分割出来子串。
- 分割符不会作为列表的一部分返回。
Python split() 摘要
| 使用频率 | 高 |
|---|---|
| 修改原字符串 | 否 |
| 官方文档 | 查看 |
| 相关方法 | rsplit()、splitlines()、join() |
Python split() 示例
接下来,我们通过几个简单的例子来讲解 Python split() 方法是如何使用的。
示例 1:split() 基本用法
s = 'Python,C++,Java'
result = s.split(',')
print(result)运行结果如下。
[ 'Python', 'C++', 'Java' ]分析:
s.split(',') 表示使用 “,”(英文逗号)作为分割符来分隔 str 这个字符串,最后会得到这样一个列表:[ 'Python', 'C++', 'Java' ]。
示例 2:split(' ')(有空格)
s = 'I love Python'
result = s.split(' ')
print(result)运行结果如下。
['I', 'love', 'Python']分析:
s.split(' ') 表示使用空格作为分割符,来对 s 进行分割。
示例 3:split(' ')(无空格)
s = 'I love Python'
result = s.split('')
print(result)运行结果如下。
(报错)ValueError: empty separator分析:
s.split('') 表示将空字符串作为分割符。在 Python 中,分割符参数不能为空字符串,否则会引发 ValueError 异常。如果想要将字符串拆分为单个字符,我们应该使用 list(s) 方法。
示例 4:split() 不带参数
s1 = 'lvyenet'
s2 = 'lvye net'
print(s1.split())
print(s2.split())运行结果如下。
['lvyenet']
['lvye', 'net']分析:
当 split() 方法不带参数(或参数为 None)时,它会将连续的 “空白字符”(包括空格、换行符 \n、制表符 \t 等)作为分割符进行分割。
因此,s1 因为没有空白字符,返回了包含原字符串的单一元素列表;而 s2 包含空格,则被成功分割成了 2 个元素。
示例 5:split() 带 maxsplit 参数
s = 'Python,C++,Java,Go,Rust'
result = s.split(',', 2)
print(result)运行结果如下。
['Python', 'C++', 'Java,Go,Rust']分析:
split(',', 2) 表示使用 “,”(英文逗号)作为分割符,然后拆分 2 次。所谓的拆分 2 次,也就是在前 2 个 ',' 处进行拆分,此时会分割成 3 个元素。
示例 6:split() 的 maxsplit 参数为负数
s = 'a,b,c,d'
result = s.split(',', -1)
print(result)运行结果如下。
['a', 'b', 'c', 'd']分析:
maxsplit = -1 表示不限制分割次数,与省略参数的行为一致。下面 2 种方式是等价的:
# 方式 1
s.split(',', -1)
# 方式 2
s.split(',')示例 7:split() 的分割符在开头或结尾
s = ',Python,C++,Java,'
result = s.split(',')
print(result)运行结果如下。
['', 'Python', 'C++', 'Java', '']分析:
如果字符串以分隔符开头,那么分割后的第一个元素为空字符串。类似地,如果以分隔符结尾,那么最后一个元素也为空字符串。
示例 8:空字符串使用 split()
s = ''
result = s.split(',')
print(result)运行结果如下。
['']分析:
这里小伙伴们要特别注意区分:如果对空字符串指定了分割符(例如 s.split(',')),会返回包含一个空字符串元素的列表 ['']。但如果对空字符串调用不带参数的 split() 方法(即 s.split()),则会返回一个完全为空的列表 []。
