这是我正在尝试做的事情:
我有一个很长的字符串:
s = asdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhf
我想删除子字符串:iwanttocutthisout
我将遍历一个循环,并且每次迭代 s 的值都会改变。唯一在每次迭代中保持不变的是要剪切的子字符串的开始和结束:iwant 和 thisout。
给定这些参数,如何删除子字符串?
谢谢你的帮助!
您可以在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")
像这样使用模块sub()
中的函数re
:
clean_s = re.sub(r'iwant\w+thisout','',s)
用 \w+ 代替 .+ 如果您希望字符串中包含非单词字符,如果有可能在开始和结束标记之间没有任何额外字符(即“iwantthisout”),请使用 * 而不是 +
s = s.replace('iwantthisout', '')