删除基于起始索引和结束索引的字符串

2024-04-25 08:16:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一堆很长的字符串,所以我想一个有效的方法来做这个操作 假设我有一根绳子

 "< stuff to remove> get this stuff <stuff to remove>

所以,我试着提取“得到这个东西”

所以我在写这样的东西。在

^{pr2}$

实现这一目标的更好方法是什么


Tags: to方法字符串目标getthisremovestuff
3条回答

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

> x="abcdefg"
> x[1:3]
'bc'

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

使用正则表达式:

>>> s = "< stuff to remove> get this stuff <stuff to remove>"
>>> import re
>>> re.sub(r'<[^<>]*>', '', s)
' get this stuff '

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

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

当然,当您有嵌套标记时,这将失败,但它对您的示例是有效的。在

正则表达式是实现这一点的一种简单方法(尽管不一定如jedwards的回答所示的那样更快):

import re
s = '< stuff to remove> get this stuff <stuff to remove>'
s = re.sub(r'<[^>]*>', '', s)

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

相关问题 更多 >