167 python string parsing split list
在字符串中最后一次出现的分隔符上拆分字符串的推荐Python习惯用法是什么?例:
# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']
# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']
Run Code Online (Sandbox Code Playgroud)
mysplit
采用第二个参数,即要分割的分隔符的出现.像常规列表索引一样,-1
意味着从最后开始.如何才能做到这一点?
Mar*_*ers 296
使用.rsplit()
或.rpartition()
代替:
s.rsplit(',', 1)
s.rpartition(',')
Run Code Online (Sandbox Code Playgroud)
str.rsplit()
允许您指定要拆分的次数,而str.rpartition()
只拆分一次但始终返回固定数量的元素(前缀,分隔符和后缀),并且对于单个拆分案例更快.
演示:
>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')
Run Code Online (Sandbox Code Playgroud)
两种方法都从字符串的右侧开始分割; 通过给出str.rsplit()
最大值作为第二个参数,您可以分割出最右侧的出现次数.
Viv*_*han 13
你可以使用rsplit
string.rsplit('delimeter',1)[1]
Run Code Online (Sandbox Code Playgroud)
从反向获取字符串.
我只是为了好玩
>>> s = 'a,b,c,d'
>>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
['a,b,c', 'd']
Run Code Online (Sandbox Code Playgroud)