赞大神,可以了;还想请教一下,我想增加一个排除条件怎么加;比如:查找failed,但排除okfailed
追答可以用find函数,比如从字符串data中查找failed,用data.find('failed'),如果data包含failed,则返回failed首次出现在data中的位置,如果找不到,返回-1。
判断data.find('failed')的值,不等于-1时让返回值-2得到failed前面两个字符的首地址,令a=data.find('failed'),b=data[a-2,a],如果data里是okfailed,那么得到的b值就是'ok'。
这是比较简单的判断,不过存在一个问题,就是find函数只能找到首个failed,如果后面还有那就不行了,比如从aaaokfailedbbfailed中找failed,它只会返回第一次找到failed的位置,这里是5,但它不会检查出还有第二个failed。经过判断第一个failed不符合要求,所以抛弃了,但是这个字符串还有第二个字符串,而第二个字符串是符合要求的,但是我们得不到这个符合要求的第二个failed。如果你的需求是找出所有符合要求的failed,排除所有不符合要求的failed,那么上面这个方法就不行了。
幸运的是完整的find函数可以接受三个参数,第一个参数是要查找的字符串,第二个参数是开始位置(即从哪个位置开始查找),第三个参数是结束位置(即找到哪一个位置就停止查找)。所以可以改变find函数的第二个参数来继续查找剩余的failed,当然也可以截取第一个failed后面剩余的字符串构成新的字符串,然后对新字符串继续查找failed。
稍作改变,加个循环即可。以第二种截取字符串的情况为例,循环内容就是找到failed并判断是否符合要求,判断完就向后截取字符串,对得到的新字符串继续查找failed并判断,直到所有failed都找出为止。