在我的python代码中:
_response = '"hidden" name="transactionA**rr**ay" value="[{"id":519292,"status":0,"parentid":"'
_responseVal = 'transactionA**r**ay" value="[{"id":'
_breakStr = ','
startIndex = _response.find(_responseVal) + len(_responseVal)
remString = _response[startIndex:]
print 'Remaining string: '+remString
我期待一个空字符串,因为我的搜索字符不存在,而是我得到的 剩下的字符串:
答案 0 :(得分:1)
find()在找不到匹配项时返回-1,然后在_response中间的某处添加len(_responseVal)和startIndex点。你为什么期望一个空字符串?
答案 1 :(得分:0)
简明扼要地说,问题是:
>>> s = "abcde"
>>> s.find("X")
-1
问题是字符串的find
方法在失败时返回-1
,因此startIndex
变成了_response
字符串中间的某个位置。您可以测试从_response.find
返回的值,看它是否为-1
并专门处理它。更简单的是切换到使用_response.index
,这会引发ValueError
;然后,您可以捕获异常并正确处理它。
答案 2 :(得分:0)
似乎您想要从较大的字符串中删除给定的字符串。您的具体问题是find返回-1并且未检查此值,并且您需要将len(_responseVal)添加到底部的行,而不是顶部更改起始索引的行。像这样:
remString = ''
startIndex = _response.find(_responseVal)
if startIndex != -1:
endIndex = startIndex + len(_responseVal)
remString = _response[startIndex : endIndex]
但实现相同目标的更简单的方法就是使用replace:
remString = _response.replace(_responseVal, '')
如果你想让它为空,如果响应中没有包含responseVal,那么你似乎:
remString = ''
if _response.find(_responseVal) != -1:
remString = _response.replace(_responseVal)