Python: поиск строки со специальными символами - PullRequest
0 голосов
/ 24 февраля 2012

В моем коде Python:

_response = '"hidden" name="transactionA**rr**ay" value="[{"id":519292,"status":0,"parentid":&quot'
_responseVal = 'transactionA**r**ay" value="[{"id":'
_breakStr = ','
startIndex = _response.find(_responseVal) + len(_responseVal)
remString = _response[startIndex:]
print 'Remaining string: '+remString

Я ожидаю пустую строку, так как мои символы поиска не существуют, вместо этого я получаю Оставшаяся строка:

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

find () возвращает -1, когда не находит совпадений, затем вы добавляете len (_responseVal) и точки startIndex где-то посередине _response.Почему вы ожидаете пустую строку?

0 голосов
/ 24 февраля 2012

Кажется, вы хотите удалить данную строку из строки большего размера. Ваши конкретные проблемы заключаются в том, что find возвращает -1, и это значение не проверяется, и вам нужно добавить len (_responseVal) в строку внизу, а не в строку сверху, которая изменяет начальный индекс. Как это:

remString  = ''
startIndex = _response.find(_responseVal)
if startIndex != -1:
   endIndex   = startIndex + len(_responseVal)
   remString  = _response[startIndex : endIndex]

Но гораздо более простым способом сделать то же самое было бы просто использовать замену:

remString = _response.replace(_responseVal, '')

И если вы хотите, чтобы он был пустым, если responseVal не содержится в ответе, как вы, похоже, делаете:

remString = ''
if _response.find(_responseVal) != -1:
   remString = _response.replace(_responseVal)
0 голосов
/ 24 февраля 2012

Сокращенный до самого необходимого, проблема заключается в следующем:

>>> s = "abcde"
>>> s.find("X")
-1

Проблема в том, что метод find для строки возвращает -1 при ошибке, поэтому startIndex оказываетсягде-то в середине строки _response.Вы можете проверить значение, возвращаемое из _response.find, чтобы увидеть, является ли оно -1, и обработать его специально.Проще перейти на использование _response.index, что поднимает ValueError;затем вы можете просто перехватить исключительную ситуацию и обработать ее соответствующим образом.

...