Как прочитать заданную c строку .txt файла в MATLAB - PullRequest
0 голосов
/ 04 марта 2020

Предположим, у меня есть файл .txt, как показано ниже:

2
3
jack
hello
46
87
928
morning

Я видел функцию fgetl() для чтения данных построчно. Тем не менее, он работает таким образом, что, когда он вызывается в первый раз, он занимает первую строку, а когда он вызывается во второй раз, он занимает вторую строку, и это продолжается так.

Однако, что Я хочу сделать это, чтобы прочитать указанную c строку (которую я могу указать).

Например, я хочу сначала прочитать строку 8, а затем строку 2 и строку 5.

Как мне это сделать?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Вот способ прочитать указанную c строку:

filename = 'file.txt'; % define file name
n_line = 3; % define line to read
fid = fopen(filename); % open file
result = textscan(fid, '%s', 1, 'Headerlines', n_line-1, 'Delimiter' ,''); % read line
result = result{1}; % unbox from cell
fclose(fid); % close file

Если вам нужно прочитать несколько строк, вы можете использовать al oop следующим образом:

filename = 'file.txt'; % define file name
n_lines = [3 7 4]; % define lines to read
fid = fopen(filename); % open file
result = cell(1,numel(n_lines));
for n = 1:numel(n_lines)
    result(n) = textscan(fid, '%s', 1, 'Headerlines', n_lines(n)-1, 'Delimiter' ,'');
    frewind(fid) % set file position back to the start
end
result = [result{:}]; % unbox from cells
fclose(fid); % close file
1 голос
/ 05 марта 2020

Быстрый способ - использовать поиск по регулярному выражению:

fr = fileread('textfile.txt');
matches = regexp(fr, '[^\n]*', 'match'); % 'matches' will be a cell array.  regexp search for '[^\n]*' returns elements separated by newline characters.

% Lines 8, 2, and 5:
matches{8}
matches{2}
matches{5}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...