2

这是我正在尝试做的事情:

我有一个很长的字符串:

s = asdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhf

我想删除子字符串:iwanttocutthisout

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

给定这些参数,如何删除子字符串?

谢谢你的帮助!

4

3 回答 3

3

您可以在iwant( +len(iwant)to dis-include iwant) 的出现索引和thisout分别进行切片,如下所示:

>>> 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")
于 2013-07-10T10:03:32.710 回答
3

像这样使用模块sub()中的函数re

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

用 \w+ 代替 .+ 如果您希望字符串中包含非单词字符,如果有可能在开始和结束标记之间没有任何额外字符(即“iwantthisout”),请使用 * 而不是 +

于 2013-07-10T10:38:55.447 回答
1
s = s.replace('iwantthisout', '')
于 2021-11-01T10:41:33.263 回答