Python rsplit()函數(shù)功能與split()函數(shù)功能非常相似,只不過rsplit()函數(shù)是從字符串的右端開始分割字符串。
Python rsplit()函數(shù)使用指定的分隔符對字符串進行分割并返回分割后的字符串列表,如果未指定分隔符時,該函數(shù)使用任何空白對字符串進行分割,空白包括空格、制表符(/t)、換行符(/n)等。
str.rsplit(sep = None, maxsplit = -1)
語法中,str是待分割的字符串;
sep:用于指定分隔符,rsplit()函數(shù)將以此分隔符對str進行分割,默認值為None,即按照空白符進行分割。
maxsplit:指定該參數(shù)時,至多返回右側(cè) maxsplit 個分割,默認值為-1,即沒有限制。
該函數(shù)的返回值是一個列表,包含了分割后的字符串。
下面舉例子來說明具體用法。
rsplit()函數(shù)不含參數(shù)時,默認使用空白作為分隔符對字符串進行分割,并且返回所有分割后的字符串。
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())
輸出結(jié)果:
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
['Python', 'R', 'SPSS', 'Java']
從上面的例子和輸出結(jié)果可以看出:
(1)在未指定分隔符時,rsplit()以空白字符作為分隔符對字符串進行分割,空白字符包括空格、'/r'、'/n'、'/t'等字符。同時,連續(xù)的多個空白字符會被作為一個空白來處理;
關(guān)于Python中空白字符,讀者可以參考這篇文章的介紹:Python isspace()函數(shù),在這篇文章中給出了所有的空白字符。
(2)未指定maxsplit參數(shù),則rsplit()函數(shù)以列表的形式返回了所有分割后的字符串;
例子中對照了split()函數(shù)的輸出,可以看出在未指定任何參數(shù)時,兩者的作用是相同的。
下面的例子演示了在給出sep參數(shù)時的執(zhí)行情況。
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("|"))
輸出結(jié)果:
['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']
從上面的例子和輸出結(jié)果可以看出:
(1)在指定sep參數(shù)的分隔符后,連續(xù)的空白每個都成為分隔符,不再作為一個處理,如上面的例子中連續(xù)的空格中,每個空格都作為分隔符,因空格前后無其他內(nèi)容,則輸出空字符串。其他的空白,如'/n'等也是如此。
(2)在只指定sep參數(shù),未指定maxsplit參數(shù)時,rsplit()函數(shù)與split()函數(shù)的功能仍然相同。
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))
輸出結(jié)果:
['Python R SPSS', 'Java']
['Python', 'R SPSS Java']
['Python/n/n R', 'SPSS', 'Java']
['Python', 'R', 'SPSS/tJava']
從例子和輸出結(jié)果看:
(1)maxsplit 實際上把字符串分割為 maxsplit + 1 部分,maxsplit可以理解為要使用的分隔符數(shù)量。maxsplit = 0 時返回整個字符串,maxsplit < 0 時相當于未設(shè)置該參數(shù)。
(2)在指定的maxsplit小于字符串中的分隔符數(shù)量時,rsplit()和split()兩個函數(shù)的輸出結(jié)果還是有區(qū)別的,split()函數(shù)默認是從左側(cè)開始分割,rsplit()是從字符串右側(cè)開始分割,所以最終結(jié)果會不相同。
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))
輸出結(jié)果:
['Python R SPSS ', '', 'Java']
['Python', 'R', ' SPSS Java']
['Python', '', ' R/rSPSS/tJava']
['Python', '', ' R/rSPSS/tJava']
在指定兩個參數(shù)時,可以使用類似的位置參數(shù)或關(guān)鍵詞參數(shù)來給參數(shù)賦值,但sep參數(shù)使用關(guān)鍵詞參數(shù)來傳值的話,maxsplit參數(shù)也必須使用關(guān)鍵詞參數(shù)來賦值,但sep使用位置參數(shù)時,maxsplit 參數(shù)可以使用位置參數(shù)或關(guān)鍵詞參數(shù)來賦值。
在同時指定sep和maxsplit參數(shù)時,split()函數(shù)和rsplit()函數(shù)的輸出結(jié)果不相同,但只有maxsplit參數(shù)大于或等于字符串找那個的分隔符數(shù)量時,兩者的結(jié)果才會相同,如上面第2個例子。
這篇文章介紹了Python中rsplit()函數(shù)的使用方法,同時對比了rsplit()函數(shù)和split()函數(shù)的異同。
新聞熱點
疑難解答