Python rsplit()函数功能与split()函数功能非常相似,只不过rsplit()函数是从字符串的右端开始分割字符串。
Python rsplit()函数使用指定的分隔符对字符串进行分割并返回分割后的字符串列表,如果未指定分隔符时,该函数使用任何空白对字符串进行分割,空白包括空格、制表符(/t)、换行符(/n)等。
str.rsplit(sep = None, maxsplit = -1)
语法中,str是待分割的字符串;
sep:用于指定分隔符,rsplit()函数将以此分隔符对str进行分割,默认值为None,即按照空白符进行分割。
maxsplit:指定该参数时,至多返回右侧 maxsplit 个分割,默认值为-1,即没有限制。
该函数的返回值是一个列表,包含了分割后的字符串。
下面举例子来说明具体用法。
rsplit()函数不含参数时,默认使用空白作为分隔符对字符串进行分割,并且返回所有分割后的字符串。
str1 = "Python R SPSS Java"
str_list = str1.rsplit()
print(str_list)
print(str1.split())
str2 = "Python/n R/rSPSS/tJava"
str_list = str2.rsplit()
print(str_list)
print(str2.split())
输出结果:
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
从上面的例子和输出结果可以看出:
(1)在未指定分隔符时,rsplit()以空白字符作为分隔符对字符串进行分割,空白字符包括空格、'/r'、'/n'、'/t'等字符。同时,连续的多个空白字符会被作为一个空白来处理;
关于Python中空白字符,读者可以参考这篇文章的介绍:Python isspace()函数,在这篇文章中给出了所有的空白字符。
(2)未指定maxsplit参数,则rsplit()函数以列表的形式返回了所有分割后的字符串;
例子中对照了split()函数的输出,可以看出在未指定任何参数时,两者的作用是相同的。
下面的例子演示了在给出sep参数时的执行情况。
str1 = "Python R SPSS Java"
str_list = str1.rsplit(' ')
print(str_list)
print(str1.split(' '))
str2 = "Python/n R/rSPSS/tJava"
str_list = str2.rsplit('/n')
print(str_list)
print(str2.split('/n'))
str3 = "Java|R|SPSS|C#|Python"
print(str3.rsplit("|"))
print(str3.split("|"))
输出结果:
['Python', 'R', '', 'SPSS', '', '', 'Java']
['Python', 'R', '', 'SPSS', '', '', 'Java']
['Python', ' R/rSPSS/tJava']
['Python', ' R/rSPSS/tJava']
['Java', 'R', 'SPSS', 'C#', 'Python']
['Java', 'R', 'SPSS', 'C#', 'Python']
从上面的例子和输出结果可以看出:
(1)在指定sep参数的分隔符后,连续的空白每个都成为分隔符,不再作为一个处理,如上面的例子中连续的空格中,每个空格都作为分隔符,因空格前后无其他内容,则输出空字符串。其他的空白,如'/n'等也是如此。
(2)在只指定sep参数,未指定maxsplit参数时,rsplit()函数与split()函数的功能仍然相同。
tr1 = "Python R SPSS Java"
str_list = str1.rsplit(maxsplit = 1)
print(str_list)
print(str1.split(maxsplit = 1))
str2 = "Python/n/n R/rSPSS/tJava"
str_list = str2.rsplit(maxsplit = 2)
print(str_list)
print(str2.split(maxsplit = 2))
输出结果:
['Python R SPSS', 'Java']
['Python', 'R SPSS Java']
['Python/n/n R', 'SPSS', 'Java']
['Python', 'R', 'SPSS/tJava']
从例子和输出结果看:
(1)maxsplit 实际上把字符串分割为 maxsplit + 1 部分,maxsplit可以理解为要使用的分隔符数量。maxsplit = 0 时返回整个字符串,maxsplit < 0 时相当于未设置该参数。
(2)在指定的maxsplit小于字符串中的分隔符数量时,rsplit()和split()两个函数的输出结果还是有区别的,split()函数默认是从左侧开始分割,rsplit()是从字符串右侧开始分割,所以最终结果会不相同。
tr1 = "Python R SPSS Java"
str_list = str1.rsplit(' ',2)
print(str_list)
print(str1.split(' ', 2))
str2 = "Python/n/n R/rSPSS/tJava"
str_list = str2.rsplit(sep='/n', maxsplit=2)
print(str_list)
print(str2.split(sep = '/n',maxsplit=2))
输出结果:
['Python R SPSS ', '', 'Java']
['Python', 'R', ' SPSS Java']
['Python', '', ' R/rSPSS/tJava']
['Python', '', ' R/rSPSS/tJava']
在指定两个参数时,可以使用类似的位置参数或关键词参数来给参数赋值,但sep参数使用关键词参数来传值的话,maxsplit参数也必须使用关键词参数来赋值,但sep使用位置参数时,maxsplit 参数可以使用位置参数或关键词参数来赋值。
在同时指定sep和maxsplit参数时,split()函数和rsplit()函数的输出结果不相同,但只有maxsplit参数大于或等于字符串找那个的分隔符数量时,两者的结果才会相同,如上面第2个例子。
这篇文章介绍了Python中rsplit()函数的使用方法,同时对比了rsplit()函数和split()函数的异同。
新闻热点
疑难解答