查找并剪切python子字符串

2024-04-25 23:24:13 发布

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

我想做的是:

我有一根长长的绳子:

s = asdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhf

我想去掉子串:iwanttocuthisout

我将遍历一个循环,每次迭代s的值都会改变。在每次迭代中唯一保持不变的是要删除的子字符串的开始和结束:iwant和thisout。

在给定这些参数的情况下,我如何剪切子字符串?

谢谢你的帮助!


Tags: 字符串参数情况子串绳子thisoutasdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhfiwanttocuthisout
2条回答

你可以在iwant+len(iwant))的发生指数和iwant之间分别做一个切片,如下所示:

>>> s = "asdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhf"
>>> s[s.index("iwant")+len("iwant"):s.index("thisout")]
'tocut'

图解法:

"asdf23rlkasdfids(iwanttocut)thisoutsadlkljasdfhvaildufhblkajsdhf"
                 ^          ^ 
                 |          |
            index("iwant")  |
                           index("thisout")

注意这两个索引(开始包含)之间的切片将如何得到iwanttocut。添加len("iwant")将导致:

"asdf23rlkasdfidsiwant(tocut)thisoutsadlkljasdfhvaildufhblkajsdhf"
                      ^     ^ 
                 /----|     |
     index("iwant")         |
                           index("thisout")

使用re模块中的sub()函数,如下所示:

clean_s = re.sub(r'iwant\w+thisout','',s)

如果字符串中需要非单词字符,请用“.+”替换“.+”,如果开始标记和结束标记之间可能没有任何额外字符(即“iwantthisout”),请使用“*而不是“+”

相关问题 更多 >