查找并删除python子字符串

时间:2013-07-10 10:00:55

标签: python string find substring cut

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

我有一个很长的字符串:

s = asdf23rlkasdfidsiwanttocutthisoutsadlkljasdfhvaildufhblkajsdhf

我想删掉子字符串:iwanttocutthisout

我将迭代循环,每次迭代时s的值都会改变。每次迭代都会保持不变的唯一因素是要剪切的子字符串的开头和结尾:iwant和thisout。

如何根据这些参数剪切子字符串?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以分别在iwant+len(iwant)到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")

答案 1 :(得分:2)

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

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

替换\ w + for。+如果您希望字符串中包含非单词字符,并使用*代替+,如果有可能在开始和结束之间不会有任何额外字符标签(即' iwantthisout')