我有以下相当简单的片段:

def delete_substring_blocks(s, blocks):

'''

s: original input string

blocks: list of indices (start, end) to be deleted

return string `out` where blocks are deleted from s

'''

out = ''

p = 0

for start, end in blocks:

out += s[p:start]

p = end

out += s[p:]

return out

此函数接受一个字符串s并从s中删除所有s [start:end],其中索引(start,end)对在列表块中给出.

是否有某个内置函数可以执行相同的操作?

更新:

我的代码中有一个假设:

>块按第一个索引按升序排序(由list.sort()就地完成)

至于块是否可以重叠,在我的用例中我确保它们在调用函数之前没有.但为了好玩,我们也可以假设他们这样做.

解决方法:

我的方法将块转换为一组索引,我称之为排除.之后,循环遍历字符串并排除索引在排除集中的那些字符.我使用set而不是list,因为它很好地处理重复项(如果重叠范围).

构建排除集

给定一个无序的,可能重叠的范围列表:

blocks = [(5, 7), (2, 4), (6, 10)]

我想将其转换为:

exclude = {2, 3, 5, 6, 7, 8, 9}

怎么样:

exclude = set()

for block in blocks:

exclude.update(range(*block))

把它们放在一起

这是我的代码和最后的一个小例子.请注意,我选择重命名该函数,因为此函数足够通用,可以处理字符串,列表,元组和其他可迭代对象,而不仅仅是字符串.另外,因为函数返回一个列表,所以在处理字符串时,我们需要将字符列表重新加入.

def delete_blocks(iterable, blocks):

exclude = set()

for block in blocks:

exclude.update(range(*block))

return [cell for i, cell in enumerate(iterable) if i not in exclude]

# Try it out

test_string = '0123456789abc'

blocks = [(5, 7), (2, 4), (6, 10)]

result = ''.join(delete_blocks(test_string, blocks))

print('Before: {!r}'.format(test_string))

print('Blocks:', blocks)

print('After: {!r}'.format(result))

更新:实现delete_substring_blocks

为了真正回答Mai的问题,我使用delete_blocks实现了delete_substring_blocks:

def delete_substring_blocks(s, blocks):

return ''.join(delete_blocks(s, blocks))

标签:python,string

python索引字符串_Python:通过索引删除子字符串相关推荐

  1. 字符串:字符串顺序比较、删除子字符串、字符串压缩

    算法提高 字符串顺序比较 题目 问题描述比较两个字符串s1和s2,输出:0表示s1与s2相等:1表示s1的字母序先于s2:-1表示s1的字母序后于s2输入格式输入两行,第一行输入一个字符串1,第二行输 ...

  2. python判断字符串中包含某个字符串_Python中最常用的字符串方法!

    译 / 忧郁的红秋裤 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串还有一些专属于它们的附加方法.下图显示了所有这 ...

  3. Leetcode5634. 删除子字符串的最大得分[C++题解]:贪心

    文章目录 题目 题目链接 题目 样例 字符串可以分成很多段,[ ab的组合].其他字母.[ab的组合].其他字母这样很多段,样例就是 cd[b]c[bbaaabab]可以拆成ab的组合和其他字母. 对 ...

  4. LeetCode 1717. 删除子字符串的最大得分

    文章目录 1. 题目 2. 解题 374 / 1631,前22.9% 1215 / 7873,前15.4% 1. 题目 给你一个字符串 s 和两个整数 x 和 y .你可以执行下面两种操作任意次. 删 ...

  5. R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串

    R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符.str_sub函数指定起始位置和终止位置替换子字符串 目录

  6. python索引用法_python 列表索引问题

    展开全部 数据结构是通e5a48de588b63231313335323631343130323136353331333363366261过某种方式组织在一起的数据元素的集合.在python中,最基本 ...

  7. python爬虫数据库_python数据库索引|python爬虫|python入门|python教程

    https://www.xin3721.com/eschool/pythonxin3721/ 首先要思考两个问题: 如何在字典中查找指定偏旁的汉字?如何在一本书中查找某内容?对于这两个问题大家都不陌生 ...

  8. python输出数字和字符串_Python中的数值和字符串

    一.Python中的数值 python中的数值分为三类:整型.浮点型和复数 1.整型: python3的整型支持各种类型的整数: python的整数值有4种表达形式: a.十进制形式,最普通的整数就是 ...

  9. php 删除子字符串函数,PHP删除字符串中的任何字符函数

    function delStr($start, $end, $orgenStr) { //读取要删除字符位置的前一部分字符串,并赋值给$temp //strpos读取字符第一次出现的位置 //subs ...

  10. 【字符串】leet459.重复的子字符串(C/C++/Java/Python/Js)

    leetcode459.重复的子字符串 1 题目 2 思路 3 代码 3.1 C++版本 3.2 C版本 3.3 Java版本 3.4 Python版本 3.5 JavaScript版本 4 总结 K ...

最新文章

  1. 使用chrome下载m3u8视频
  2. 【字符串】字符串查找 ( 蛮力算法 )
  3. foreach php5.4,php5脚本升级 - foreach里面的foreach
  4. struts2 的struts.properties配置详解
  5. [CF706D]Vasiliy's Multiset(异或字典树)
  6. Python入门7_抽象进阶
  7. Windows基本的数据类型
  8. SLAM学习笔记-------------(12)建图
  9. colorUI的使用
  10. (226)FPGA入门推荐书籍
  11. 技嘉 7pesh3 安装Linux,技嘉h370主板装win7系统及BIOS设置教程(完美支持usb3.1)
  12. codeforces1549 F1 - Gregor and the Odd Cows (Easy)(皮克公式)
  13. 【python学习】python的面向对象编程
  14. 易到要在网约车市场突围并不容易
  15. iphone不支持webp图片格式处理方案
  16. fai 自动安装debian 7.4
  17. java retained size_使用MAT时的Shallow Size和 Retained Size的区别
  18. php curl添加授权Authorization 验证头
  19. hive:函数:日期比较函数:获取当前日期 + date_add + date_sub函数获取前几天或后几天的日期
  20. (九)unity自带的着色器源码剖析之——————UnityShadowLibrary.cginc文件分析(实时阴影和烘焙阴影、阴影淡化、阴影渗漏处理、PCF阴影过滤解决实时阴影锯齿)

热门文章

  1. Hadoop的RPC工作原理
  2. Think in Java第四版 读书笔记1
  3. 设计模式笔记十五:命令模式
  4. 设计模式笔记十四:责任链模式
  5. 单电源运算放大器全波整流电路_精密半波、全波整流电路结构原理图解
  6. Windows下修改pip install 的镜像源
  7. 全国计算机等级英语一级考试,全国计算机等级考试职业英语一级考试大纲
  8. jsp怎么调用servlet_Servlet简述
  9. php事件检测,细说浏览器特性检测(2)-通用事件检测_jquery
  10. set类型 php,常用php操作redis命令整理(四)SET类型详解