Чтение HTML-файла в Matlab как непрерывного - PullRequest
0 голосов
/ 11 июля 2011

Я читал в HTML-файлах в Matlab с readfile, с интересом использования regexp для извлечения данных из него.Функция возвращает данные файла в виде строки, которая сохраняет «структуру» файла HTML, например, новые строки.Например, если вы попытаетесь выполнить чтение файла для файла с указанным ниже содержимым, он вернет строку с такой же структурой.

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
   <HEAD>
      <TITLE>
     A Small Hello
      </TITLE>
   </HEAD>
</HTML>

Я ищу функцию, которая возвращает непрерывную строкукак ...

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML> <HEAD> <TITLE> A Small Hello </TITLE> </HEAD> <BODY> <H1>Hi</H1> <P>This is very minimal "hello world" HTML document.</P> </BODY> </HTML>

Этот формат поможет в моих regexp начинаниях.

Большое спасибо, Боб М

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Быстрый способ объединить эти вещи может состоять в том, чтобы импортировать данные и затем объединить их с помощью strcat.

код

imported_string = importdata(filename)
imported_string_together = strcat(imported_string{:})

производит следующий вывод

imported_string = 

    '<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">'
    '<HTML>'
    '   <HEAD>'
    '      <TITLE>'
    '     A Small Hello'
    '      </TITLE>'
    '   </HEAD>'
    '</HTML>'


imported_string_together =

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML>   <HEAD>      <TITLE>     A Small Hello      </TITLE>   </HEAD></HTML>

но это не очень эффективно.

Я считаю, что иногда полезно вернуться к функциям типа fopen / fread / fscanf, чтобы быстро загружать вещи предсказуемым образом. Например, вы можете использовать следующий код для создания того, что вы хотите, без особого копирования и прочей ерунды:

filename = 'test.html';
maxReadSize = 2^10;

fid = fopen(filename);
mystr = fscanf(fid, '%c', maxReadSize)

для получения следующего вывода:

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML>   <HEAD>      <TITLE>     A Small Hello      </TITLE>   </HEAD></HTML>
</HTML>
1 голос
/ 11 июля 2011

Регулярные выражения могут сделать это:

str = fileread('file.html');
str = regexprep(str,'\s*',' ');   %# replace multiple whitespaces with a space
...