python - 根据python中另一个字符串元素的数量删除字符串元素

假设我们以这种形式给出了一个字符串。

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 项的长度。

https://stackoverflow.com/questions/68711852/

相关文章:

c++ - 使用 accumulate 计算替代总和

python - 从需要登录的社交媒体网站抓取最新帖子时,如何保持不被发现?

flutter - 带有 SliverAppBar 的 NestedScrollView 导致意外的

javascript - 如何使用 Axios 拦截器向响应添加一些 header ?

java - 使用同步(锁定对象) block 时,静态锁定对象是否需要是最终的?

css - 注入(inject)具有特定范围的 Chakra UI 全局样式

reactjs - 如何在 onSubmit 事件中使用 react-query useQuery?

bash - 引用命令替换的正确方法

r - 按类别获取最大值作为 R 中的新列

apache-spark - 如何在 Spark SQL 中访问 python 变量?