textscan

Считайте отформатированные данные из текстового файла или строки

Синтаксис

C = textscan(fileID,formatSpec)
C = textscan(fileID,formatSpec,N)
C = textscan(chr,formatSpec)
C = textscan(chr,formatSpec,N)
C = textscan(___,Name,Value)
[C,position] = textscan(___)

Описание

пример

C = textscan(fileID,formatSpec) считывает данные из открытого текстового файла в массив ячеек, C. Текстовый файл обозначается идентификатором файла, fileID. Используйте fopen, чтобы открыть файл и получить значение fileID. Когда вы закончили читать из файла, закрываете файл путем вызова fclose(fileID).

textscan пытается совпадать с данными в файле к спецификатору преобразования в formatSpec. Функция textscan повторно применяет formatSpec в целом файле и останавливается, когда это не может совпадать с formatSpec к данным.

пример

C = textscan(fileID,formatSpec,N) данные о файле чтений с помощью времен N formatSpec, где N является положительным целым числом. Чтобы считать дополнительные данные из файла после циклов N, вызовите textscan снова с помощью исходного fileID. Если вы возобновляете текстовое сканирование файла путем вызова textscan с тем же идентификатором файла (fileID), то textscan автоматически продолжает читать в точке, где это отключило последнее чтение.

пример

C = textscan(chr,formatSpec) читает текст из вектора символов chr в массив ячеек C. При чтении текста из вектора символов повторенные вызовы textscan перезапускают сканирование с начала каждый раз. Чтобы перезапустить сканирование от последней позиции, запросите position вывод.

textscan пытается совпадать с данными в векторе символов chr к формату, заданному в formatSpec.

C = textscan(chr,formatSpec,N) использует времена N formatSpec, где N является положительным целым числом.

пример

C = textscan(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары Name,Value, в дополнение к любому из входных параметров в предыдущих синтаксисах.

пример

[C,position] = textscan(___) возвращает положение в файле или векторе символов в конце сканирования как второй выходной аргумент. Для файла это - значение, которое ftell(fileID) возвратил бы после вызова textscan. Для вектора символов position указывает сколько символов чтение textscan.

Примеры

свернуть все

Считайте вектор символов, содержащий числа с плавающей запятой.

chr = '0.41 8.24 3.57 6.24 9.27';
C = textscan(chr,'%f');

Спецификатор '%f' в formatSpec говорит textscan совпадать с каждым полем в chr к числу с плавающей запятой с двойной точностью.

Отобразите содержимое массива ячеек C.

celldisp(C)
 
C{1} =
 
    0.4100
    8.2400
    3.5700
    6.2400
    9.2700

 

Считайте тот же вектор символов и обрежьте каждое значение до одной десятичной цифры.

C = textscan(chr,'%3.1f %*1d');

Спецификатор %3.1f указывает на ширину поля 3 цифр и точность 1. Функция textscan читает в общей сложности 3 цифры, включая десятичную точку и 1 цифру после десятичной точки. Спецификатор, %*1d, говорит textscan пропускать остающуюся цифру.

Отобразите содержимое массива ячеек C.

celldisp(C)
 
C{1} =
 
    0.4000
    8.2000
    3.5000
    6.2000
    9.2000

 

Загрузите файл данных и считайте каждый столбец с соответствующим типом.

Файл загрузки scan1.dat и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже.

 filename = fullfile(matlabroot,'examples','matlab','scan1.dat');

Откройте файл и считайте каждый столбец с соответствующим спецификатором преобразования. textscan возвращает массив ячеек 1-by-9 C.

fileID = fopen(filename);
C = textscan(fileID,'%s %s %f32 %d8 %u %f %f %s %f');
fclose(fileID);
whos C
  Name      Size            Bytes  Class    Attributes

  C         1x9              2249  cell               

Просмотрите тип данных MATLAB® каждой из ячеек в C.

C
C = 1x9 cell array
  Columns 1 through 5

    {3x1 cell}    {3x1 cell}    {3x1 single}    {3x1 int8}    {3x1 uint32}

  Columns 6 through 9

    {3x1 double}    {3x1 double}    {3x1 cell}    {3x1 double}

Исследуйте отдельные записи. Заметьте, что C{1} и C{2} являются массивами ячеек. C{5} имеет тип данных uint32, таким образом, первые два элемента C{5} являются максимальными значениями для 32 битное беззнаковое целое или intmax('uint32').

celldisp(C)
 
C{1}{1} =
 
09/12/2005
 
 
C{1}{2} =
 
10/12/2005
 
 
C{1}{3} =
 
11/12/2005
 
 
C{2}{1} =
 
Level1
 
 
C{2}{2} =
 
Level2
 
 
C{2}{3} =
 
Level3
 
 
C{3} =
 
   12.3400
   23.5400
   34.9000

 
 
C{4} =
 
   45
   60
   12

 
 
C{5} =
 
   4294967295
   4294967295
       200000

 
 
C{6} =
 
   Inf
  -Inf
    10

 
 
C{7} =
 
       NaN
    0.0010
  100.0000

 
 
C{8}{1} =
 
Yes
 
 
C{8}{2} =
 
No
 
 
C{8}{3} =
 
No
 
 
C{9} =
 
   5.1000 + 3.0000i
   2.2000 - 0.5000i
   3.1000 + 0.1000i

 

Удалите буквенный текст 'Level' из каждого поля во втором столбце данных из предыдущего примера. Предварительный просмотр файла показывают ниже.

Откройте файл и совпадайте с буквенным текстом во входе formatSpec.

filename = fullfile(matlabroot,'examples','matlab','scan1.dat');
fileID = fopen(filename);
C = textscan(fileID,'%s Level%d %f32 %d8 %u %f %f %s %f');
fclose(fileID);
C{2}
ans = 3x1 int32 column vector

   1
   2
   3

Просмотрите тип данных MATLAB® второй ячейки в C. Вторая ячейка массива ячеек 1-by-9, C, имеет теперь тип данных int32.

disp( class(C{2}) )
int32

Считайте первый столбец файла в предыдущем примере в массив ячеек, пропустив остальную часть строки.

filename = fullfile(matlabroot,'examples','matlab','scan1.dat');
fileID = fopen(filename);
dates = textscan(fileID,'%s %*[^\n]');
fclose(fileID);
dates{1}
ans = 3x1 cell array
    {'09/12/2005'}
    {'10/12/2005'}
    {'11/12/2005'}

textscan возвращает массив ячеек даты.

Загрузите файл data.csv и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит данные, разделенные запятыми, и также содержит пустые значения.

Считайте файл, преобразовав пустые ячейки в -Inf.

filename = fullfile(matlabroot,'examples','matlab','data.csv');
fileID = fopen(filename);
C = textscan(fileID,'%f %f %f %f %u8 %f',...
'Delimiter',',','EmptyValue',-Inf);
fclose(fileID);
column4 = C{4}, column5 = C{5}
column4 = 2×1

     4
  -Inf

column5 = 2x1 uint8 column vector

    0
   11

textscan возвращает массив ячеек 1-by-6, C. Функция textscan преобразовывает пустое значение в C{4} к -Inf, где C{4} сопоставлен с форматом с плавающей точкой. Поскольку MATLAB® представляет беззнаковое целое -Inf как 0, textscan преобразовывает пустое значение в C{5} к 0, и не -Inf.

Загрузите файл data2.csv и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит данные, которые могут быть интерпретированы как комментарии и другие записи, такие как 'NA' или 'na', который может указать на пустые поля.

filename = fullfile(matlabroot,'examples','matlab','data2.csv');

Определяйте вход, который textscan должен обработать как комментарии или пустые значения и отсканировать данные в C.

fileID = fopen(filename);
C = textscan(fileID,'%s %n %n %n %n','Delimiter',',',...
'TreatAsEmpty',{'NA','na'},'CommentStyle','//');
fclose(fileID);

Отобразите вывод.

celldisp(C)
 
C{1}{1} =
 
abc
 
 
C{1}{2} =
 
def
 
 
C{2} =
 
     2
   NaN

 
 
C{3} =
 
   NaN
     5

 
 
C{4} =
 
     3
     6

 
 
C{5} =
 
     4
     7

 

Загрузите файл data3.csv и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит повторенные разделители.

filename = fullfile(matlabroot,'examples','matlab','data3.csv');

Чтобы обработать повторные запятые как один разделитель, используйте параметр MultipleDelimsAsOne и установите значение к 1 (true).

fileID = fopen(filename);
C = textscan(fileID,'%f %f %f %f','Delimiter',',',...
'MultipleDelimsAsOne',1);
fclose(fileID);


celldisp(C)
 
C{1} =
 
     1
     5

 
 
C{2} =
 
     2
     6

 
 
C{3} =
 
     3
     7

 
 
C{4} =
 
     4
     8

 

Загрузите файл данных grades.txt для этого примера и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит повторенные разделители.

filename = fullfile(matlabroot,'examples','matlab','grades.txt');

Считайте заголовки столбцов с помощью формата '%s' четыре раза.

fileID = fopen(filename);
formatSpec = '%s';
N = 4;
C_text = textscan(fileID,formatSpec,N,'Delimiter','|');

Считайте числовые данные в файле.

C_data0 = textscan(fileID,'%d %f %f %f')
C_data0 = 1x4 cell array
    {4x1 int32}    {4x1 double}    {4x1 double}    {4x1 double}

Значением по умолчанию для CollectOutput является 0 (false), таким образом, textscan возвращает каждый столбец числовых данных в отдельном массиве.

Установите индикатор позиции в файле на начало файла.

frewind(fileID);

Перечитайте файл и установите CollectOutput на 1 (TRUE) собирать последовательные столбцы того же класса в единый массив. Можно использовать функцию repmat, чтобы указать, что спецификатор преобразования %f должен появиться три раза. Этот метод полезен, когда формат много раз повторяется.

C_text = textscan(fileID,'%s',N,'Delimiter','|');
C_data1 = textscan(fileID,['%d',repmat('%f',[1,3])],'CollectOutput',1)
C_data1 = 1x2 cell array
    {4x1 int32}    {4x3 double}

Экзаменационные отметки, которые являются все двойными, собраны в сингл 4 3 массив.

Закройте файл.

fclose(fileID);

Считайте первые и последние столбцы данных из текстового файла. Пропустите столбец текста и столбец целочисленных данных.

Загрузите файл names.txt и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит два столбца заключенного в кавычки текста, сопровождаемого столбцом целых чисел, и наконец столбцом чисел с плавающей точкой.

filename = fullfile(matlabroot,'examples','matlab','names.txt');

Считайте первые и последние столбцы данных в файле. Используйте спецификатор преобразования, %q, чтобы считать текст, заключенный двойными кавычками ("). %*q пропускает заключенный в кавычки текст, %*d пропускает целочисленное поле, и %f читает число с плавающей запятой. Задайте разделитель запятой с помощью аргумента пары "имя-значение" 'Delimiter'.

fileID = fopen(filename,'r');
C = textscan(fileID,'%q %*q %*d %f','Delimiter',',');
fclose(fileID);

Отобразите вывод. textscan возвращает массив ячеек C, куда двойные кавычки, заключающие текст, удалены.

celldisp(C)
 
C{1}{1} =
 
Smith, J.
 
 
C{1}{2} =
 
Bates, G.
 
 
C{1}{3} =
 
Curie, M.
 
 
C{1}{4} =
 
Murray, G.
 
 
C{1}{5} =
 
Brown, K.
 
 
C{2} =
 
   71.1000
   69.3000
   64.1000
  133.0000
   64.9000

 

Загрузите файл german_dates.txt и предварительно просмотрите его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что первый столбец значений содержит даты на немецком языке, и вторые и третьи столбцы являются числовыми значениями.

filename = fullfile(matlabroot,'examples','matlab','german_dates.txt');

Откройте файл. Задайте схему кодировки символов, сопоставленную с файлом как последний вход к fopen.

fileID = fopen(filename,'r','n','ISO-8859-15');

Считайте файл. Задайте формат дат в файле с помощью спецификатора %{dd % MMMM yyyy}D. Задайте локаль дат с помощью аргумента пары "имя-значение" DateLocale.

C = textscan(fileID,'%{dd MMMM yyyy}D %f %f',...
    'DateLocale','de_DE','Delimiter',',');
fclose(fileID);

Просмотрите содержимое первой ячейки в C. Даты отображают на языке использование MATLAB в зависимости от вашей системной локали.

C{1}
ans = 3x1 datetime array
   01 January 2014 
   01 February 2014
   01 March 2014   

Используйте sprintf, чтобы преобразовать escape-последовательности не по умолчанию в ваших данных.

Создайте текст, который включает символ перевода страницы, \f. Затем чтобы считать текст с помощью textscan, вызовите sprintf, чтобы явным образом преобразовать перевод формата.

lyric = sprintf('Blackbird\fsinging\fin\fthe\fdead\fof\fnight');
C = textscan(lyric,'%s','delimiter',sprintf('\f'));
C{1}
ans = 7x1 cell array
    {'Blackbird'}
    {'singing'  }
    {'in'       }
    {'the'      }
    {'dead'     }
    {'of'       }
    {'night'    }

textscan возвращает массив ячеек, C.

Продолжите сканировать от положения кроме начала.

Если вы возобновляете сканирование текста, textscan читает с начала каждый раз. Чтобы возобновить сканирование от любого другого положения, используйте синтаксис 2D выходного аргумента в своем начальном вызове textscan.

Например, создайте вектор символов под названием lyric. Считайте первое слово вектора символов, и затем возобновите сканирование.

lyric = 'Blackbird singing in the dead of night';
[firstword,pos] = textscan(lyric,'%9c',1);
lastpart = textscan(lyric(pos+1:end),'%s');

Входные параметры

свернуть все

Идентификатор файла открытого текстового файла, заданного как номер. Прежде, чем считать файл с textscan, необходимо использовать fopen, чтобы открыть файл и получить fileID.

Типы данных: double

Формат полей данных, заданных как вектор символов или строка одного или нескольких спецификаторов преобразования. Когда textscan читает вход, он пытается совпадать с данными к формату, заданному в formatSpec. Если textscan не удается совпадать с полем данных, он прекращает читать и возвращает все полевое чтение перед отказом.

Количество спецификаторов преобразования определяет количество ячеек в выходном массиве, C.

Numeric Fields

Эта таблица приводит доступные спецификаторы преобразования для числовых входных параметров.

Числовой входной типСпецификатор преобразованияВыходной класс
Целое число, подписанное%dint32
%d8int8
%d16int16
%d32int32
%d64int64
Целое число, без знака%uuint32
%u8uint8
%u16uint16
%u32uint32
%u64uint64
Число с плавающей запятой%fdouble
%f32single
%f64double
%ndouble

Nonnumeric Fields

Эта таблица приводит доступные спецификаторы преобразования для входных параметров, которые включают нечисловые символы.

Нечисловой входной типСпецификатор преобразованияДетали
Символ%cСчитайте любой отдельный символ, включая разделитель.
Текстовый массив%sЧитайте как массив ячеек из символьных векторов.
%q

Читайте как массив ячеек из символьных векторов. Если текст начинается с двойной кавычки ("), не используйте ведущую кавычку и ее метку закрытия сопровождения, которая является вторым экземпляром одинокой двойной кавычки. Замените оставленные двойные кавычки (например, ""abc"") с одинокими двойными кавычками ("abc"). %q игнорирует любые двойные кавычки, которые появляются после заключительной двойной кавычки.

Пример: '%q' читает '"Joe ""Lightning"" Smith, Jr."' как 'Joe "Lightning" Smith, Jr.'.

Даты и время%D

Считайте тот же путь как %q выше, и затем преобразуйте в значение datetime.

%{fmt}D

Считайте тот же путь как %q выше, и затем преобразуйте его в значение datetime. fmt описывает формат входного текста. Вход fmt является вектором символов идентификаторов буквы, который является допустимым значением для свойства Format datetime. textscan преобразовывает текст, который не совпадает с этим форматом к значениям NaT.

Для получения дополнительной информации о форматах отображения datetime, смотрите свойство Format для массивов datetime.

Пример: '%{dd-MMM-yyyy}D' задает формат даты, такой как '01-Jan-2014'.

Длительность%T

Считайте тот же путь как %q выше, и затем преобразуйте в значение длительности.

%{fmt}T

Считайте тот же путь как %q выше, и затем преобразуйте его в значение длительности. fmt описывает формат входного текста. Вход fmt является вектором символов идентификаторов буквы, который является допустимым значением для свойства Format длительности. textscan преобразовывает текст, который не совпадает с этим форматом к значениям NaN.

Для получения дополнительной информации о форматах отображения длительности, смотрите свойство format для массивов длительности.

Пример: '%{hh:mm:ss}T' задает формат длительности, такой как '10:30:15', который представляет 10 часов, 30 минут и 15 секунд.

Категория%C

Считайте тот же путь как %q, и затем преобразуйте в название категории в категориальном массиве. textscan преобразовывает текст <undefined> в неопределенное значение в выходном категориальном массиве.

Сопоставление с образцом%[...]

Читайте как массив ячеек из символьных векторов, символы в скобках до первого символа несоответствия. Чтобы включать ] в набор, задайте его сначала: %[]...].

Пример: %[mus] читает 'summer ' как 'summ'.

%[^...]

Исключите символы в скобках, читая до первого символа соответствия. Чтобы исключить ], задайте его сначала: %[^]...].

Пример: %[^xrg] читает 'summer ' как 'summe'.

Optional Operators

Спецификаторы преобразования в formatSpec могут включать дополнительные операторы, которые появляются в следующем порядке (включает пробелы для ясности):

Дополнительные операторы включают:

  • Поля и символы, чтобы проигнорировать

    textscan читает все символы в вашем файле в последовательности, если вы не говорите ему игнорировать конкретное поле или фрагмент поля.

    Вставьте символ звездочки (*) после символа процента (%), чтобы пропустить поле или фрагмент символьного поля.

    Оператор

    Меры приняты

    %*k

    Пропустите поле. k является любым спецификатором преобразования, идентифицирующим поле, чтобы пропустить. textscan не создает выходную ячейку ни для каких подобных полей.

    Пример: '%s %*s %s %s %*s %*s %s' (пробелы являются дополнительными) преобразовывает текст
    'Blackbird singing in the dead of night' в четыре выходных ячейки с
    'Blackbird' 'in' 'the' 'night'

    '%*ns'

    Пропустите до символов n, где n является целым числом, меньше чем или равным количеству символов в поле.

    Пример: '%*3s %s' преобразовывает 'abcdefg' в 'defg'. Когда разделитель является запятой, тот же разделитель преобразовывает 'abcde,fghijkl' в массив ячеек, содержащий 'de';'ijkl'.

    '%*nc'

    Пропустите символы n, включая символы-разделители.

  • Ширина поля

    textscan читает количество символов или цифр, заданных шириной поля или точностью, или до первого разделителя, какой бы ни на первом месте. Десятичная точка, знак (+ или -), символ экспоненты и цифры в числовой экспоненте считается как символы и цифры в ширине поля. Для комплексных чисел ширина поля относится к отдельным ширинам действительной части и мнимой части. Для мнимой части ширина поля включает + или −, но не i или j. Задайте ширину поля путем вставки номера после символа процента (%) в спецификаторе преобразования.

    Пример: %5f читает '123.456' как 123.4.

    Пример: %5c читает 'abcdefg' как 'abcde'.

    Когда оператор ширины поля используется с отдельными символами (%c), textscan также читает разделитель, пробел и символы конца строки.
    Пример: %7c читает 7 символов, включая пробел, so'Day and night' чтения как 'Day and'.

  • Точность

    Для чисел с плавающей запятой (%n, %f, %f32, %f64), можно задать количество десятичных цифр, чтобы читать.

    Пример: %7.2f читает '123.456' как 123.45.

  • Буквенный текст, чтобы проигнорировать

    textscan игнорирует текст, добавленный к спецификатору преобразования formatSpec.

    Пример: Level%u8 читает 'Level1' как 1.

    Пример: %u8Step читает '2Step' как 2.

Типы данных: char | string

Число раз, чтобы применить formatSpec, заданный как положительное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Введите текст, чтобы читать.

Типы данных: char | string

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: C = textscan(fileID,formatSpec,'HeaderLines',3,'Delimiter',',') пропускает первые три строки данных, и затем считывает остающиеся данные, обрабатывая запятые как разделитель.

Имена не являются чувствительными к регистру.

Логический индикатор, определяющий конкатенацию данных, заданную как пара, разделенная запятой, состоящая из 'CollectOutput' и или true или false. Если true, то функция импорта конкатенирует последовательные выходные ячейки того же основного класса MATLAB® в единый массив.

Символы, определяющие текст проигнорировать, заданный как пара, разделенная запятой, состоящая из 'CommentStyle' и вектора символов, массива ячеек из символьных векторов, строки или массива строк.

Например, задайте символ, такой как '%', чтобы проигнорировать текст после символа на той же строке. Задайте массив ячеек двух векторов символов, таких как {'/*','*/'}, чтобы проигнорировать любой текст между теми последовательностями.

MATLAB проверяет на комментарии только в начале каждого поля, не в поле.

Пример: 'CommentStyle',{'/*','*/'}

Типы данных: char | string

Локаль для чтения датируется, заданный как пара, разделенная запятой, состоящая из 'DateLocale' и вектора символов в форме xx_YY, где xx является строчный ISO 639-1 двухбуквенный код, который задает язык, и YY является прописной альфой ISO 3166-1 2 кода, которые задают страну. Для списка общих ценностей для локали смотрите аргумент пары "имя-значение" Locale для функции datetime.

Используйте DateLocale, чтобы задать локаль, в которой textscan должен интерпретировать месяц и день недельных имен и сокращений при чтении текста как дат с помощью спецификатора формата %D.

Пример: 'DateLocale','ja_JP'

Символы разделителя полей, заданные как пара, разделенная запятой, состоящая из 'Delimiter' и вектора символов или массива ячеек из символьных векторов. Задайте несколько разделителей в массиве ячеек из символьных векторов.

Пример: 'Delimiter',{';','*'}

textscan интерпретирует повторенные символы-разделители как отдельные разделители и возвращает пустое значение к выходной ячейке.

В каждой строке данных разделитель полей по умолчанию является пробелом. Пробел может быть любой комбинацией пробела (' '), клавиша Backspace ('\b') или вкладка ('\t') символы. Если вы не задаете разделитель, то:

  • символы-разделители совпадают с пробельными символами. Пробельными символами по умолчанию является ' ', '\b' и '\t'. Используйте аргумент пары "имя-значение" 'Whitespace', чтобы задать альтернативные пробельные символы.

  • textscan интерпретирует повторенные пробельные символы как один разделитель.

Когда вы задаете одну из следующих escape-последовательностей как разделитель, textscan преобразовывает ту последовательность в соответствующий управляющий символ:

\bКлавиша Backspace
\nНовая строка
\rВозврат каретки
\tВкладка
\\Наклонная черта влево (\)

Типы данных: char | string

Возвращенное значение для пустых числовых полей в файлах разделенного текста, заданных как пара, разделенная запятой, состоящая из 'EmptyValue' и скаляра.

Символы конца строки, заданные как пара, разделенная запятой, состоящая из 'EndOfLine' и вектора символов или строки. Вектором символов должен быть '\r\n', или это должно задать отдельный символ. Общие символы конца строки являются символом новой строки ('\n') или возврат каретки ('\r'). Если вы задаете '\r\n', то функция импорта обрабатывает любой \r, \n и комбинацию двух (\r\n) как символы конца строки.

Последовательностью конца строки по умолчанию является \n, \r или \r\n, в зависимости от содержимого вашего файла.

Если существуют отсутствующие значения и последовательность конца строки в конце последней строки в файле, то функция импорта возвращает пустые значения для тех полей. Это гарантирует, что отдельные ячейки в выходном массиве ячеек, C, одного размера.

Пример: 'EndOfLine',':'

Типы данных: char | string

Символы экспоненты, заданные как пара, разделенная запятой, состоящая из 'ExpChars' и вектора символов или строки. Символами экспоненты по умолчанию является e, E, d и D.

Типы данных: char | string

Количество строк заголовка, заданных как пара, разделенная запятой, состоящая из 'HeaderLines' и положительного целого числа. textscan пропускает строки заголовка, включая остаток от текущей строки.

Несколько обработка разделителя, заданная как пара, разделенная запятой, состоящая из 'MultipleDelimsAsOne' и или true или false. Если true, то функция импорта обрабатывает последовательные разделители как один разделитель. Повторные разделители, разделенные пробелом, также обработаны как один разделитель. Необходимо также задать опцию Delimiter.

Пример: 'MultipleDelimsAsOne',1

Поведение, когда textscan не удается считать или преобразовать, заданный как пара, разделенная запятой, состоящая из 'ReturnOnError' и или true или false. Если true, textscan останавливается без ошибки и возвращает все полевое чтение. Если false, textscan останавливается с ошибкой и не возвращает выходной массив ячеек.

Текст заполнителя, чтобы обработать как пустое значение, заданное как пара, разделенная запятой, состоящая из 'TreatAsEmpty' и вектора символов, массива ячеек из символьных векторов, строки или массива строк. Эта опция только применяется к числовым полям.

Типы данных: char | string

Пробельные символы, заданные как пара, разделенная запятой, состоящая из 'Whitespace' и вектора символов или строки, содержащей один или несколько символов. textscan добавляет пробел, char(32), любому задал Whitespace, если Whitespace не пуст (''), и formatSpec включает любой спецификатор преобразования.

Когда вы задаете одну из следующих escape-последовательностей как любой пробельный символ, textscan преобразовывает ту последовательность в соответствующий управляющий символ:

\bКлавиша Backspace
\nНовая строка
\rВозврат каретки
\tВкладка
\\Наклонная черта влево (\)

Типы данных: char | string

Тип выходных данных текста, заданного как пара, разделенная запятой, состоящая из 'TextType' и или 'char' или 'string'. Если вы задаете значение 'char', то textscan возвращает текст как массив ячеек из символьных векторов. Если вы задаете значение 'string', то textscan возвращает текст как массив типа string.

Выходные аргументы

свернуть все

Файл или текстовые данные, возвращенные как массив ячеек.

Для каждого числового спецификатора преобразования в formatSpec функция textscan возвращает K-by-1 MATLAB числовой вектор к выходному массиву ячеек, C, где K является числом раз, что textscan находит поле, совпадающее со спецификатором.

Для каждого текстового спецификатора преобразования (%s, %q или %[...]) в formatSpec, функция textscan возвращает K-by-1 массив ячеек из символьных векторов, где K является числом раз, что textscan находит поле, совпадающее со спецификатором. Для каждого преобразования символов, которое включает оператор ширины поля, textscan возвращает K-by-M символьный массив, где M является шириной поля.

Для каждого datetime или категориального спецификатора преобразования в formatSpec, функция textscan возвращает K-by-1 datetime или категориальный вектор к выходному массиву ячеек, C, где K является числом раз, что textscan находит поле, совпадающее со спецификатором.

Положение в конце сканирования, в файле или векторе символов, возвратилось как целое число класса double. Для файла ftell (fileID) возвратил бы то же значение после вызова textscan. Для вектора символов position указывает сколько символов чтение textscan.

Алгоритмы

textscan преобразовывает числовые поля в заданный выходной тип согласно правилам MATLAB относительно переполнения, усечения и использования NaN, Inf и -Inf. Например, MATLAB представляет целочисленный NaN как нуль. Если textscan находит пустое поле сопоставленным со спецификатором целочисленного формата (таким как %d или %u), это возвращает пустое значение как нуль и не NaN.

При соответствии с данными к текстовому спецификатору преобразования, чтения textscan, пока это не находит разделитель или символ конца строки. При соответствии с данными к числовому спецификатору преобразования, чтения textscan, пока это не находит нечисловой символ. Когда textscan больше не может совпадать с данными к конкретному спецификатору преобразования, это пытается совпадать с данными к следующему спецификатору преобразования в formatSpec. Знак (+ или -), символы экспоненты и десятичные точки рассматривается цифровыми символами.

ЗнакЦифрыДесятичная точкаЦифры'ExponentCharacter' ЗнакЦифры
Считайте один символ знака, если он существует.Считайте одну или несколько цифр.Считайте одну десятичную точку, если она существует.Если существует десятичная точка, считайте одну или несколько цифр, которые сразу следуют за нею.Считайте один символ экспоненты, если он существует.Если существует символ экспоненты, считайте один символ знака.Если существует символ экспоненты, считайте одну или несколько цифр, которые следуют за ним.

textscan импортирует любое комплексное число в целом в комплексное числовое поле, преобразовывая действительные и мнимые части в заданный числовой тип (такие как %d или %f). Допустимые формы для комплексного числа:

±<real>±<imag>i|j

Пример: 5.7-3.1i

±<imag>i|j

Пример: -7j

Не включайте встроенный пробел в комплексное число. textscan интерпретирует встроенный пробел как разделитель полей.

Представлено до R2006a