textscan

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

Описание

пример

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

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

пример

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

пример

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

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

C = textscan(chr,formatSpec,N) использует formatSpec N времена, где 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

 

Считайте вектор символов, который представляет набор шестнадцатеричных чисел. Текст, который представляет шестнадцатеричные числа, включает цифры 0-9, буквы aF или AF, и опционально префиксы 0x или 0X.

Совпадать с полями в hexnums к шестнадцатеричным числам используйте '%x' спецификатор. textscan функция преобразует поля в 64-битные целые числа без знака.

hexnums = '0xFF 0x100 0x3C5E A F 10';
C = textscan(hexnums,'%x')
C = 1x1 cell array
    {6x1 uint64}

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

transpose(C{:})
ans = 1x6 uint64 row vector

     255     256   15454      10      15      16

Можно преобразовать поля в целые числа со знаком или беззнаковое целое, имея 8, 16, 32, или 64 бита. Преобразовывать поля в hexnums до 32-битных целых чисел со знаком используйте '%xs32' спецификатор.

C = textscan(hexnums,'%xs32');
transpose(C{:})
ans = 1x6 int32 row vector

     255     256   15454      10      15      16

Можно также задать ширину поля для интерпретации входа. В этом случае префикс рассчитывает к ширине поля. Например, если вы устанавливаете ширину поля до три, как в %3x, затем textscan разделяет текст '0xAF 100' в три части текста, '0xA'F, и '100'. Это обрабатывает три части текста как различные шестнадцатеричные числа.

C = textscan('0xAF 100','%3x');
transpose(C{:})
ans = 1x3 uint64 row vector

    10    15   256

Считайте вектор символов, который представляет набор двоичных чисел. Текст, который представляет двоичные числа, включает цифры 0 и 1, и опционально префиксы 0b или 0B.

Совпадать с полями в binnums к двоичным числам используйте '%b' спецификатор. textscan функция преобразует поля в 64-битные целые числа без знака.

binnums = '0b101010 0b11 0b100 1001 10';
C = textscan(binnums,'%b')
C = 1x1 cell array
    {5x1 uint64}

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

transpose(C{:})
ans = 1x5 uint64 row vector

   42    3    4    9    2

Можно преобразовать поля в целые числа со знаком или беззнаковое целое, имея 8, 16, 32, или 64 бита. Преобразовывать поля в binnums до 32-битных целых чисел со знаком используйте '%bs32' спецификатор.

C = textscan(binnums,'%bs32');
transpose(C{:})
ans = 1x5 int32 row vector

   42    3    4    9    2

Можно также задать ширину поля для интерпретации входа. В этом случае префикс рассчитывает к ширине поля. Например, если вы устанавливаете ширину поля до три, как в %3b, затем textscan разделяет текст '0b1010 100' в три части текста, '0b1', '010', и '100'. Это обрабатывает три части текста как различные двоичные числа.

C = textscan('0b1010 100','%3b');
transpose(C{:})
ans = 1x3 uint64 row vector

   1   2   4

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

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

 filename = '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              2105  cell               

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

C
C=1×9 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 = '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 = 'scan1.dat';
fileID = fopen(filename);
dates = textscan(fileID,'%s %*[^\n]');
fclose(fileID);
dates{1}
ans = 3x1 cell
    {'09/12/2005'}
    {'10/12/2005'}
    {'11/12/2005'}

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

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

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

filename = '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 как 0textscan преобразует пустое значение в C{5} к 0, и не -Inf.

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

filename = '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 = '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 = '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=1×4 cell array
    {4x1 int32}    {4x1 double}    {4x1 double}    {4x1 double}

Значение по умолчанию для CollectOutput 0 ложь), таким образом, 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=1×2 cell array
    {4x1 int32}    {4x3 double}

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

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

fclose(fileID);

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

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

filename = '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 = '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
   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
    {'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
Шестнадцатеричный номер, беззнаковое целое%xuint64
%xu8uint8
%xu16uint16
%xu32uint32
%xu64uint64
Шестнадцатеричный номер, целое число со знаком%xs8int8
%xs16int16
%xs32int32
%xs64int64
Двоичное число, беззнаковое целое%buint64
%bu8uint8
%bu16uint16
%bu32uint32
%bu64uint64
Двоичное число, целое число со знаком%bs8int8
%bs16int16
%bs32int32
%bs64int64

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'.

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

  • Точность

    Для чисел с плавающей запятой (%nF, %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 имя аргумента и 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''characters'. Если вы не задаете разделитель, то:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

Алгоритмы

textscan преобразует числовые поля в заданный выходной тип согласно правилам MATLAB относительно переполнения, усечения и использования NaNInf, и -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