python字符串操作,在字符串中找到一个子字符串
这个问题在这里已经有了答案:
你必须使用output[begin:end]
,而不是output[begin, end]
(这只是如何切片普通字符串/列表/等工作的语法)。 所以:
minusStuffBeforeReqPer = output[reqPerIndx:len(output)]
但是,这是多余的。 所以你应该改为这样做:
minusStuffBeforeReqPer = output[reqPerIndx:]
通过省略切片的end
部分,切片将一直到output
结束。
因为你已经传递了一个元组( (reqPerIndx, len(output))
给分片[...]
),并且你得到一个关于int
没有__getitem__
的错误,所以你得到一个关于访问没有[0]
的元组的错误,因为当你写reqPerIndx[0]
,你试图获得reqPerIndx
第0
个元素,这是一个整数,但当然没有“整数的第0个元素”这样的东西,因为整数没有元素。
正如@AshwiniChaudhary在注释中指出的那样,如果未找到子字符串, str.find
将返回-1
。 如果你确定你正在寻找的东西总是可以在output
找到,我想你不需要处理-1
情况,但无论如何,这可能是一个好主意。
reqPerIndx = output.find(reqPerStr)
if reqPerIndx != -1:
minusStuffBeforeReqPer = ...
# etc
else:
# handle this case separately
正则表达式可能会带来更好的运气。 我不知道output
是什么样的,所以我只是猜测 - 你应该适应这个来匹配你output
任何东西。
>>> import re
>>> re.findall(r'(?:Requests per second:)s*(d+)', "Requests: 24")
[]
>>> re.findall(r'(?:Requests per second:)s*(d+)', "Requests per second: 24")
['24']
你在这两行中有错误:
minusStuffBeforeReqPer = output[reqPerIndx[0], len(output)]
instanceTestObj.reqPerSec = minusStuffBeforeReqPer[semiColIndx+1, eolIndx]
你必须使用:
来创建一个范围。 start:end
。
您可以省略最后一个参数来结束或省略第一个参数以省略开始。 参数也可以是负数。 由于find可能返回-1
你必须以不同的方式处理它,因为如果找不到字符串,最终会得到:
minusStuffBeforeReqPer = output[-1:]
这是字符串中的最后一个字符。
你应该看起来像这样的代码:
#output contains the string reqPerStr.
reqPerStr = "Requests per second:"
reqPerIndx = output.find(reqPerStr)
if reqPerIndx != -1:
minusStuffBeforeReqPer = output[reqPerIndx[0]:]
eolIndx = minusStuffBeforeReqPer.find("n")
semiColIndx = minusStuffBeforeReqPer.find(":")
if eolIndx > semiColIndx >= 0:
instanceTestObj.reqPerSec = minusStuffBeforeReqPer[semiColIndx+1:eolIndx]
这很好,但是,你一定要用正则表达式改变代码。 据我所知,你真的想匹配一个以reqPerStr
并以n
结尾的字符串,并获得介于:
和n
之间的所有内容。
你可以用这样的模式来做到这一点:
"Requests per second:(.*)n"
你最终会得到:
import re
reqPerIndx = output.find(reqPerStr)
match = re.match("Requests per second:(.*)n", output)
if match:
instanceTestObj.reqPerSec = match.group(1)
如果你想找到所有匹配,你可以这样做:
for match in re.finditer("Requests per second:(.*)", output)
instanceTestObj.reqPerSec = match.group(1)
链接地址: http://www.djcxy.com/p/55115.html
上一篇: python string manipulation, finding a substring within a string