2013-08-05 36 views
0

我想從Python(下面)爲Python v2.7.5翻譯此代碼。你可以幫我嗎?findstr from matlab for python

fseek (fid,128,'bof'); 
offset = fread (fid,1,'ushort'); 
while (offset > 0) 
freeString = setstr (fread (fid,offset-2,'char'))'; 
if (findstr (freeString,'ACQUISITION_DATE') > 0) 
    date_rec=(freeString (length ('ACQUISITION_DATE '):length (freeString))); 
end; 
if (findstr (freeString,'ACQUISITION_TIME') > 0) 
    time_rec=(freeString (length ('ACQUISITION_TIME '):length (freeString))); 
end; 
if (findstr (freeString,'GENERAL_CONSTANT') > 0) 
    gen_const_rec=(freeString (length ('GENERAL_CONSTANT '):length (freeString))); 

謝謝 塞繆爾

+2

到目前爲止,你嘗試過什麼? –

+0

您所顯示的代碼中沒有'end',並且''offset'的值在'while'循環內不會改變。因此它永遠不會終止(儘管它可能不會運行)。通常人們會使用'if'。你確定這個代碼片段是正確的/完整的嗎? – Floris

+0

或者基於標題和儘管代碼轉儲,問題簡單地是什麼Python的等價物'findstr(input_str,'test_str')> 0'是? – horchler

回答

0

基於從@horchler的建議,你可能只需要in操作:

print ("hello" in "hello world") 

>> True 

print ("hello" in "goodbye") 

>> False 

print ("hello" in "world, hello") 

>> True 

換句話說,Matlab的

相當於
if (findstr (freeString,'ACQUISITION_DATE') > 0) 

if ('ACQUISITION_DATE' in freeString): 

注 - FINDSTR(這將在Matlab的未來版本中被刪除)會發現「在較長的一個較短的字符串」 - 而Python的in運營商的操作數的順序很重要。