【发布时间】:2019-06-16 09:25:16
【问题描述】:
给定一个字符串:s = FFFFRRFFFFFFFPPRRRRRRLLRLLRLLLPPFPPLPPLPPLFPPFFPFLRPFFRRLLRPFPRFFFFFFFLFDRRFRRFFFFFFFFRQEE
分隔符为P、Q、D和E
我希望能够在这些字符上拆分字符串。
基于:Is it possible to split a string on multiple delimiters in order?
我有以下
def splits(s,seps):
l,_,r = s.partition(seps[0])
if len(seps) == 1:
return [l,r]
return [l] + splits(r,seps[1:])
seps = ['P', 'D', 'Q', 'E']
sequences = splits(s, seps)
这给了我:
['FFFFRRFFFFFFF',
'PRRRRRRLLRLLRLLLPPFPPLPPLPPLFPPFFPFLRPFFRRLLRPFPRFFFFFFFLF',
'RRFRRFFFFFFFFR',
'',
'E']
我们可以看到第二个条目有很多P。
我想要的是最后一组P之间出现的字符,而不是第一次出现的字符(即RFFFFFFFLF)。
另外,分隔符的出现顺序也不是固定的。
正在寻找有关如何实现此目标的解决方案/提示?
更新:所需的输出,这些分隔符之间的所有字符串集(类似于显示的那个),但遵守上面最后一次出现的条件
更新 2:预期输出
['FFFFRRFFFFFFF',
'RFFFFFFFLF', # << this is where the output differs
'RRFRRFFFFFFFFR',
'',
''] # << the last E is 2 consecutive E with no other letters, hence should be empty
【问题讨论】:
-
你的预期输出是什么?
-
您想要的输出不清楚,但是如果您想在最后一次出现时拆分,请尝试将
partition替换为rpartition。 -
对不起,输出应该是分隔符之间存在的所有字符串集;类似于给定的,但坚持最后一次出现的条件。 (更新了问题)
-
除了描述输出应该是什么样子之外,你能从字面上显示预期的输出吗?
-
你需要的是like this吗?