假设我们以这种形式给出了一个字符串。
xstr = 'hewBllo'
其中每个 B
表示将从字符串中删除多少个先前的字符。例如,上面的字符串包含 1 B.
因此,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
项的长度。
关于python - 根据python中另一个字符串元素的数量删除字符串元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68711852/