2013-08-05 8 views
0

Я хотел был бы перевести этот код из Matlab (ниже) для Python v2.7.5. Вы можете мне помочь?findstr от matlab для 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' is? – 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, порядка вопросов операндов.

Смежные вопросы