2012-02-24 25 views
-1

Pythonの:特殊文字の文字列を検索する私の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 

私の検索文字iが 残りの文字列を取得代わりに、存在していないように私は、空の文字列を期待しています:

+0

適切にあなたのコードを編集し、それが問題である何 – Petrucio

+0

を読むことは不可能ですしてください? [faq]と[ask] –

答えて

1

find()は、一致が見つからなかった場合は-1を返し、次に_responseの途中でlen(_responseVal)およびstartIndexポイントを追加します。なぜあなたは空の文字列を期待していますか?

必需品にまで凝縮
+0

ニースと簡潔な答えをお読みください。 –

0

、トラブルはこれです:

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

問題は、文字列のfind方法はstartIndex_responseの途中のどこかであることが判明したので、失敗した場合に-1を返すということです文字列。 _response.findから返された値をテストして、それが-1であるかどうかを調べ、それを特別に処理できます。より簡単に_response.indexに切り替えると、ValueErrorが発生します。例外をキャッチして適切に処理できます。

0

大きな文字列から特定の文字列を削除したいようです。あなたの特定の問題は、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) 
関連する問題