2013-08-05 35 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运营商的操作数的顺序很重要。