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()函數的異同。
新聞熱點
疑難解答