根据python中另一个字符串元素的数量删除字符串元素
让我们假设我们已经给出了一个这种形式的字符串。
xstr = 'hewBllo'
其中 eachB表示将从字符串中删除多少个先前的字符。例如,上面的字符串包含 1B.因此,前面的第一个字母B将从字符串中删除。新字符串应如下所示。
new_xstr = 'hello'
另一个例子:
xstr = 'remoBBBising'
转换后,新字符串应如下所示,
new_xstr = 'rising'
由于从前三个B字母开始有 3 个字母,因此B应从字符串中删除。我已经想出了一个算法,但是对于这样一个看似很小的过程,它花费的时间太长了。你们能想出 1-2 行代码来完成这个过程,或者是一种聪明的方法来做到这一点吗?
我的算法:
1-从后面读剧本。
2-当你第一次遇到时B,开始计数。
3-当您到达终点时B停止计数。
4-删除字符串作为计数。
5-删除所有B字母。
回答
使用带有 lambda 回调的正则表达式替换,我们可以尝试:
str = 'remoBBBising'
output = re.sub(r'(w+?)(B+)', lambda m: m.group(1)[:-len(m.group(2))] , str)
print(output) # rising
这里的逻辑是在两个单独的组中捕获该B术语以及导致它的前一个单词。然后,我们只用第一个捕获的词替换,从词尾修剪B词条的长度。