有什么方法可以不使用暴力或类似的东西来做下面的事情吗?
str = "abbcccddddefefef"
N = 3
repeated_term = func(str,N)
print(repeated_term )
> ['c','ef']
N = 2
term = func(str,N)
print(term)
> ['b', 'dd', 'fe'] # Thanks to @blhsing for the correction!
以此类推。
发布于 2018-12-11 03:12:34
您可以安装支持可变宽度后视模式的PyPi regex module,以使用一个正则表达式来查找恰好重复N-1次的序列:
import regex
def func(s, N):
return regex.findall(r'(?=(.+?)(?:\1){%d}(?!\1))(?<!\1)' % (N - 1), s)
因此:
func("abbcccddddefefef", 3)
返回:
['c', 'ef']
那就是:
func("abbcccddddefefef", 2)
返回:
['b', 'dd', 'fe']
请注意,您对N=2的预期输出是不正确的,因为'dd'
和'fe'
也都恰好出现2次。
https://stackoverflow.com/questions/53711428
复制相似问题