首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据起始索引和结束索引删除字符串

根据起始索引和结束索引删除字符串
EN

Stack Overflow用户
提问于 2012-04-11 01:07:22
回答 4查看 2.1K关注 0票数 1

因此,我有一堆长字符串,因此想出一种有效的方法来执行此操作,假设我有一个字符串,如下所示

代码语言:javascript
复制
 "< stuff to remove> get this stuff <stuff to remove>

所以,我正在试着提取"get this this“

所以我正在写一些类似这样的东西。

代码语言:javascript
复制
 strt_pos = 0
  end_pos = 0
 while True:
   strt_idx = string.find(start_point, strt_pos) # start_point = "<" in our example
   end_idx  = string.find(end_point, end_pos)   # end_point = ">" in our example
   chunk_to_remove = string[strt_idx:end_idx]
    # Now how do i chop this part off from the string??
   strt_pos = strt_pos + 1
    end_pos = end_pos + 1
   if str_pos >= len(string) # or maybe end_pos >= len(string):
      break

实现这一点的更好方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-11 01:11:26

使用正则表达式:

代码语言:javascript
复制
>>> s = "< stuff to remove> get this stuff <stuff to remove>"
>>> import re
>>> re.sub(r'<[^<>]*>', '', s)
' get this stuff '

表达式<[^<>]*>匹配以<开头、以>结尾、中间没有<>的字符串。然后,sub命令将匹配替换为空字符串,从而将其删除。

然后,如果需要,可以对结果调用.strip()来删除前导空格和尾随空格。

当然,当您有嵌套标记时,这将失败,但它将适用于您的示例。

票数 2
EN

Stack Overflow用户

发布于 2012-04-11 01:11:59

正则表达式是一种简单的方法(尽管不一定像jedwards的答案所示的那样更快):

代码语言:javascript
复制
import re
s = '< stuff to remove> get this stuff <stuff to remove>'
s = re.sub(r'<[^>]*>', '', s)

在此s之后将是字符串' get this stuff '

票数 2
EN

Stack Overflow用户

发布于 2012-04-11 01:16:55

我不确定你正在做的搜索操作是否是问题的一部分。如果你只是说你有一个开始索引和一个结束索引,并且你想从一个字符串中删除这些字符,你不需要一个特殊的函数。Python允许您对字符串中的字符使用数字索引。

代码语言:javascript
复制
> x="abcdefg"
> x[1:3]
'bc'

您想要执行的操作应该类似于x[:strt_idx] + x[end_idx:]。(如果省略第一个参数,则表示“从头开始”;如果省略第二个参数,则表示“继续到结尾”。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10093186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档