Объект настроек импорта для текстовых файлов фиксированной ширины
A FixedWidthImportOptions
позволяет вам задать, как MATLAB® импортирует табличные данные фиксированной ширины из текстовых файлов. Объект содержит свойства, которые управляют процессом импорта данных, включая обработку ошибок и недостающих данных.
Можно создать FixedWidthImportOptions
объект, использующий либо fixedWidthImportOptions
функцию (описанную здесь) или detectImportOptions
функция:
Использование fixedWidthImportOptions
для определения свойств импорта на основе ваших требований к импорту.
Использование detectImportOptions
обнаружение и заполнение свойств импорта на основе содержимого текстового файла фиксированной ширины, заданного в filename
.
opts = detectImportOptions(filename)
opts = fixedWidthImportOptions
создает FixedWidthImportOptions
объект с одной переменной.
opts = fixedWidthImportOptions('NumVariables',
создает объект с количеством переменных, заданным в numVars
)numVars
.
numVars
- Количество переменныхКоличество переменных, заданное как положительное скалярное целое число.
VariableNames
- Имена переменныхИмена переменных, заданные как массив ячеек из векторов символов или строковых массивов. The VariableNames
свойство содержит имена, используемые при импорте переменных.
Если данные содержат N
переменные, но имена переменных не заданы, затем VariableNames
свойство содержит {'Var1','Var2',...,'VarN'}
.
Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule
на 'preserve'
.
Пример: opts.VariableNames
возвращает текущие (обнаруженные) имена переменных.
Пример: opts.VariableNames(3) = {'Height'}
изменяет имя третьей переменной на Height
.
Типы данных: char
| string
| cell
VariableNamingRule
- Флаг для сохранения имен переменных'modify'
(по умолчанию) | 'preserve'
Флаг для сохранения имен переменных, заданный как разделенная разделенными запятой парами, состоящая из VariableNamingRule
и любой из них 'modify'
или 'preserve'
.
'modify'
- Преобразуйте недопустимые имена переменных (как определено isvarname
function) для действительных идентификаторов MATLAB.
'preserve'
- Сохраните имена переменных, которые не являются допустимыми идентификаторами MATLAB, такими как имена переменных, которые включают пространства и символы, отличные от ASCII.
Начиная с R2019b, имена переменных и имена строк могут включать любые символы, включая пространства и символы, отличные от ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Переменная и имена строк не должны быть допустимыми идентификаторами MATLAB (как определяется isvarname
функция). Чтобы сохранить эти имена переменных и имена строк, задайте значение VariableNamingRule
на 'preserve'
.
Типы данных: char
| string
VariableWidths
- Ширина поля переменныхШирина поля переменных в текстовом файле фиксированной ширины, заданная как вектор положительных целочисленных значений. Каждое положительное целое число в векторе соответствует количеству символов в поле, которое составляет переменную. The VariableWidths
свойство содержит запись, соответствующую каждой переменной, заданной в VariableNames
свойство.
VariableTypes
- Типы данных переменнойТип данных переменной, заданный как массив ячеек из векторов символов или строковые массивы, содержащий набор допустимых имен типов данных. The VariableTypes
свойство определяет типы данных, которые будут использоваться при импорте переменных.
Как обновить VariableTypes
свойство, используйте setvartype
функция.
Пример: opts.VariableTypes
возвращает текущие типы данных переменных.
Пример: opts = setvartype(opts,'Height',{'double'})
изменяет тип данных переменной Height
на double
.
SelectedVariableNames
- Подмножество переменных для импортаПодмножество переменных для импорта, заданное как вектор символов, строковый скаляр, массив ячеек векторов символов, строковые массивы или массив числовых индексов.
SelectedVariableNames
должен быть подмножеством имен, содержащихся в VariableNames
свойство. По умолчанию SelectedVariableNames
содержит все имена переменных из VariableNames
свойство, что означает, что все переменные импортируются.
Используйте SelectedVariableNames
свойство для импорта только интересующих переменных. Задайте подмножество переменных, используя SelectedVariableNames
свойство и использование readtable
для импорта только этого подмножества.
Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule
на 'preserve'
.
Пример: opts.SelectedVariableNames = {'Height','LastName'}
выбирает только две переменные, Height
и LastName
, для операции импорта.
Пример: opts.SelectedVariableNames = [1 5]
выбирает только две переменные, первую и пятую переменные, для операции импорта.
Пример: T = readtable(filename,opts)
возвращает таблицу, содержащую только переменные, указанные в SelectedVariableNames
свойство opts
объект.
Типы данных: uint16
| uint32
| uint64
| char
| string
| cell
VariableOptions
- Введите конкретные настройки импорта переменныхВведите конкретные настройки импорта переменных, возвращенные как массив объектов настроек импорта переменных. Массив содержит объект, соответствующий каждой переменной, заданной в VariableNames
свойство. Каждый объект в массиве содержит свойства, поддерживающие импорт данных с определенным типом данных.
Опции переменной поддерживают следующие типы данных: число, текст, logical
, datetime
, или categorical
.
Чтобы запросить текущие (или обнаруженные) опции для переменной, используйте getvaropts
функция.
Чтобы задать и настроить опции для переменной, используйте setvaropts
функция.
Пример: opts.VariableOptions
возвращает набор VariableImportOptions
объекты, по одному, соответствующий каждой переменной в данных.
Пример: getvaropts(opts,'Height')
возвращает VariableImportOptions
объект для Height
переменная.
Пример: opts = setvaropts(opts,'Height','FillValue',0)
устанавливает FillValue
свойство для переменной Height
на 0
.
DataLines
- Расположение данныхРасположение данных, заданное в виде положительного скалярного целого числа или N-
по -2
массив положительных скалярных целых чисел. Задайте DataLines
использование одной из этих форм.
Задайте как |
Описание |
---|---|
|
Укажите первую линию, содержащую данные. Определение значения с помощью
|
| Укажите область значений линий, содержащий данные. Значения в массиве |
|
Задайте несколько области значений линий для чтения с Допустимый массив из нескольких областей значений линий должен:
При определении нескольких областей значений линий используйте |
Пример: opts.DataLines = 5
устанавливает DataLines
свойство значению [5 inf]
. Считайте все строки данных, начиная с 5
строк в конец файла.
Пример: opts.DataLines = [2 6]
устанавливает свойство для чтения линий 2
через 6
.
Пример: opts.DataLines = [1 3; 5 6; 8 inf]
устанавливает свойство для чтения строк 1
, 2
, 3
, 5
, 6
и все строки между 8
и конец файла.
Типы данных: single
| double
| uint8
| uint16
| uint32
| uint64
RowNamesColumn
- Расположение имен строк0
(по умолчанию) | положительное скалярное целое числоРасположение имен строк, заданное как положительное скалярное целое число. The RowNamesColumn
свойство задает местоположение столбца, содержащего имена строк.
Если RowNamesColumn
задается как 0, тогда не импортируйте имена строк. В противном случае импортируйте имена строк из указанного столбца.
Пример: opts.RowNamesColumn = 2;
Типы данных: single
| double
| uint8
| uint16
| uint32
| uint64
VariableNamesLine
- Расположение имен переменных0
(по умолчанию) | положительное скалярное целое числоРасположение имен переменных, заданное как положительное скалярное целое число. The VariableNamesLine
свойство задает номер линии, где расположены имена переменных.
Если VariableNamesLine
задается как 0, тогда не импортируйте имена переменных. В противном случае импортируйте имена переменных из указанной линии.
Пример: opts.VariableNamesLine = 6;
Типы данных: single
| double
| uint8
| uint16
| uint32
| uint64
VariableDescriptionsLine
- Расположение описания переменной0
(по умолчанию) | положительное скалярное целое числоРасположение описания переменной в виде положительного скалярного целого числа. The VariableDescriptionsLine
свойство задает номер линии, в которой расположены описания переменных.
Если VariableDescriptionsLine
задается как 0, тогда не импортируйте описания переменных. В противном случае импортируйте описание переменной из указанной линии.
Пример: opts.VariableDescriptionsLine = 7;
Типы данных: single
| double
| uint8
| uint16
| uint32
| uint64
VariableUnitsLine
- Расположение переменных модулей0
(по умолчанию) | положительное скалярное целое числоРасположение переменных модулей в виде положительного скалярного целого числа. The VariableUnitsLine
свойство задает номер линии, в которой расположены переменные модули.
Если VariableUnitsLine
задается как 0, тогда не импортируйте модули. В противном случае импортируйте модули переменной из заданной линии.
Пример: opts.VariableUnitsLine = 8;
Типы данных: single
| double
| uint8
| uint16
| uint32
| uint64
Whitespace
- Символы для лечения как пустое пространствоСимволы для обработки как пустое пространство, заданные как вектор символов или строковый скаляр, содержащий один или несколько символов.
Пример: 'Whitespace',' _'
Пример: 'Whitespace','?!.,'
LineEnding
- Символы в конце строки{'\n','\r','\r\n'}
(по умолчанию) | символьный вектор | строковый скаляр | массив ячеек из векторов символов | строковые массивыСимволы в конце строки, заданные как вектор символов, строковый скаляр, массив ячеек из векторов символов или строковые массивы.
Пример: 'LineEnding','\n'
Пример: 'LineEnding','\r\n'
Пример: 'LineEnding',{'\b',':'}
Типы данных: char
| string
| cell
CommentStyle
- Стиль комментариевСтиль комментариев, заданный как вектор символов, строковый скаляр, массив ячеек из векторов символов или строковые массивы.
Для примера, чтобы игнорировать текст, следующий за процентным знаком на той же линии, задайте CommentStyle
как '%'
.
Пример: 'CommentStyle',{'/*'}
Типы данных: char
| string
| cell
Encoding
- Схема кодирования символов''
| 'UTF-8'
| 'system'
| 'ISO-8859-1'
| 'windows-1251'
| 'windows-1252'
| ...Схема кодирования символов, сопоставленная с файлом, задается как разделенная разделенными запятой парами, состоящая из 'Encoding'
и 'system'
или стандартное имя схемы кодирования символов.
Когда вы не задаете никакой кодировки, функция использует автоматическое обнаружение набора символов, чтобы определить кодировку при чтении файла.
Пример: 'Encoding','system'
использует системную кодировку по умолчанию.
Типы данных: char
| string
PartialFieldRule
- Процедура обработки частичных полей'keep'
| 'fill'
| 'omitrow'
| 'omitvar'
| 'wrap'
| 'error'
Процедура обработки частичных полей в данных в виде одного из значений в этой таблице.
Правило частичного поля | Поведение |
---|---|
'keep' | Сохраните данные частичного поля и преобразуйте текст в соответствующий тип данных. В некоторых случаях, когда функция импорта не может интерпретировать частичные данные, может возникнуть ошибка преобразования. |
'fill' | Замените отсутствующие данные на содержимое The |
'omitrow' | Опускать строки, которые содержат частичные данные. |
'omitvar' | Опускайте переменные, которые содержат частичные данные. |
'wrap' | Начните чтение следующей линии символов. |
'error' | Отображение сообщения об ошибке и прекращение операции импорта. |
Пример: opts.PartialFieldRule = 'keep';
Типы данных: char
| string
EmptyLineRule
- Процедура обработки пустых линий'skip'
| 'read'
| 'error'
Процедура обработки пустых линий в данных, заданная как 'skip'
, 'read'
, или 'error'
. Функция импорта интерпретирует пустое пространство как пустое.
Правило пустой линии | Поведение |
---|---|
'skip' | Пропустите пустые линии. |
'read' | Импортируйте пустые линии. Функция импорта анализирует пустую линию, используя значения, указанные в VariableWidths , VariableOptions , MissingRule , и другие соответствующие свойства, такие как Whitespace . |
'error' | Отображение сообщения об ошибке и прекращение операции импорта. |
Пример: opts.EmptyLineRule = 'skip';
Типы данных: char
| string
MissingRule
- Процедура управления отсутствующими данными'fill'
(по умолчанию) | 'error'
| 'omitrow'
| 'omitvar'
Процедура управления отсутствующими данными, заданная в качестве одного из значений в этой таблице.
Отсутствующее правило | Поведение |
---|---|
'fill' | Замените отсутствующие данные на содержимое The |
'error' | Остановите импорт и отобразите сообщение об ошибке, показывающее отсутствующие запись и поле. |
'omitrow' | Опускать строки, которые содержат отсутствующие данные. |
'omitvar' | Опускайте переменные, которые содержат отсутствующие данные. |
Пример: opts.MissingRule = 'omitrow';
Типы данных: char
| string
ImportErrorRule
- Процедура обработки ошибок импорта'fill'
(по умолчанию) | 'error'
| 'omitrow'
| 'omitvar'
Процедура обработки ошибок импорта, заданная как одно из значений в этой таблице.
Правило импорта ошибок | Поведение |
---|---|
'fill' | Замените данные, в которых произошла ошибка, содержимым The |
'error' | Остановите импорт и отобразите сообщение об ошибке, показывающее запись и поле, вызывающие ошибку. |
'omitrow' | Опускать строки, в которых происходят ошибки. |
'omitvar' | Опускайте переменные, где происходят ошибки. |
Пример: opts.ImportErrorRule = 'omitvar';
Типы данных: char
| string
ExtraColumnsRule
- Процедура обработки дополнительных столбцов'addvars'
| 'ignore'
| 'wrap'
| 'error'
Процедура обработки дополнительных столбцов данных в виде одного из значений в этой таблице.
Правило дополнительных столбцов | Поведение |
---|---|
'addvars' | Чтобы импортировать дополнительные столбцы, создайте новые переменные. Если есть ПРИМЕЧАНИЕ. Дополнительные столбцы импортируются как текст с типом данных |
'ignore' | Игнорируйте дополнительные столбцы данных. |
'wrap' | Перенос дополнительных столбцов данных в новые записи. Это действие не изменяет количество переменных. |
'error' | Отображение сообщения об ошибке и прекращение операции импорта. |
Типы данных: char
| string
getvaropts | Получите переменные настройки импорта |
setvaropts | Установите настройки импорта переменных |
setvartype | Установите типы данных переменных |
preview | Предварительный просмотр восьми строк из файла с помощью настроек импорта |
Исследуйте форматированный текстовый файл фиксированной ширины, инициализируйте объект настроек импорта и используйте объект для импорта таблицы из текстового файла.
Загрузка и предварительный просмотр текстового файла фиксированной ширины
Загрузите файл fixed_width_patients_subset_perfect.txt
и предварительный просмотр его содержимого в текстовом редакторе. Снимок экрана показывает, что файл содержит форматированные данные фиксированной ширины.
filename = 'fixed_width_patients_subset_perfect.txt';
Исследуйте и извлеките свойства файла с фиксированной шириной
Текстовый файл фиксированной ширины имеет табличные данные, организованные начальным местоположением, количеством переменных, именами переменных и переменными ширинами. Соберите эти свойства и требуемый тип данных для переменных.
DataStartLine = 2; NumVariables = 7; VariableNames = {'LastName','Gender','Age','Location','Height',... 'Weight','Smoker'}; VariableWidths = [ 10, 7, 4, 26, 7, ... 7, 7 ] ; DataType = {'char','categorical','double','char','double',... 'double','logical'};
Инициализация и настройка FixedWidthImportOptions
Объект
Инициализируйте FixedWidthImportOptions
и сконфигурируйте его свойства так, чтобы они совпадали со свойствами данных в fixed_width_patients_subset_perfect.txt
.
opts = fixedWidthImportOptions('NumVariables',NumVariables,... 'DataLines',DataStartLine,... 'VariableNames',VariableNames,... 'VariableWidths',VariableWidths,... 'VariableTypes',DataType);
Таблица импорта
Использование readtable
с FixedWidthImportOptions
объект для импорта таблицы.
T = readtable(filename,opts)
T=10×7 table
LastName Gender Age Location Height Weight Smoker
____________ ______ ___ _____________________________ ______ ______ ______
{'Smith' } Male 38 {'County General Hospital' } 71 176 true
{'Johnson' } Male 43 {'VA Hospital' } 69 163 false
{'Williams'} Female 38 {'St. Mary's Medical Center'} 64 131 false
{'Brown' } Female 49 {'County General Hospital' } 64 119 false
{'Miller' } Female 33 {'VA Hospital' } 64 142 true
{'Wilson' } Male 40 {'VA Hospital' } 68 180 false
{'Taylor' } Female 31 {'County General Hospital' } 66 132 false
{'Thomas' } Female 42 {'St. Mary's Medical Center'} 66 137 false
{'Jackson' } Male 25 {'VA Hospital' } 71 174 false
{'Clark' } Female 48 {'VA Hospital' } 65 133 false
Задайте объект настроек импорта, чтобы импортировать грязные данные из форматированного текстового файла фиксированной ширины. Сконфигурируйте объект, чтобы обработать грязные данные и использовать его для импорта таблицы.
Загрузка и предварительный просмотр текстового файла фиксированной ширины
Загрузите файл fixed_width_patients_subset_messy.txt
и предварительный просмотр его содержимого в текстовом редакторе. Снимок экрана показан ниже. Снимок экрана показывает, что файл содержит:
Пустые линии - Линии 7, 12 и 13
Дополнительный столбец - Столбец 8
Отсутствующие данные - Линии 1, 4, 9 и 11
Частичные поля - Последние 3 строки
filename = 'fixed_width_patients_subset_messy.txt';
Просмотр и захват свойств файла с фиксированной шириной
Текстовый файл с фиксированной шириной имеет табличные данные, организованные начальным местоположением, количеством переменных, именами переменных и переменными ширинами. Соберите эти свойства и тип данных, которые вы хотите использовать для переменных.
DataStartLine = 2; NumVariables = 7; VariableNames = {'LastName','Gender','Age','Location','Height',... 'Weight','Smoker'}; VariableWidths = [ 10, 7, 4, 26, 7, ... 7, 7 ] ; DataType = {'char','categorical','double','char','double',... 'double','logical'};
Инициализация FixedWidthImportOptions
Объект и настройка свойств переменной
Инициализируйте FixedWidthImportOptions
и сконфигурируйте его свойства так, чтобы они совпадали со свойствами данных.
opts = fixedWidthImportOptions('NumVariables',NumVariables,... 'DataLines',DataStartLine,... 'VariableNames',VariableNames,... 'VariableWidths',VariableWidths,... 'VariableTypes',DataType);
Настройка EmptyLinesRule
, Missing Rule
, и ExtraColumnsRule
Считайте пустые линии в данных путем установки EmptyLineRule
на 'read'
. Затем заполните отсутствующие образцы предопределенными значениями путем установки MissingRule
на 'fill'
. Наконец, чтобы игнорировать дополнительный столбец во время импорта, установите ExtraColumnsRule
на 'ignore'
. Для получения дополнительной информации о свойствах и их значениях смотрите документацию для FixedWidthImportOptions
.
opts.EmptyLineRule = 'read'; opts.MissingRule = 'fill'; opts.ExtraColumnsRule ='ignore';
Настройка PartialFieldRule
Частичные поля возникают, когда функция импорта достигает символа конца строки, прежде чем будет пройдена полная ширина переменной. Например, в этом предпросмотре последние три строки из файла fixed_width_patients_subset_messy.txt
. Здесь, в последней строке последнего столбца, символ конца строки появляется после двух мест от начала поля, прежде чем будет достигнута полная переменная ширина трех.
Это вхождение частичного поля иногда может указывать на ошибку. Поэтому используйте PartialFieldRule
чтобы решить, как обрабатывать эти данные. Чтобы сохранить данные частичного поля и преобразовать его в соответствующий тип данных, установите PartialFieldRule
на 'keep'
. Для получения дополнительной информации о PartialFieldRule
, см. документацию для FixedWidthImportOptions
.
opts.PartialFieldRule = 'keep';
Таблица импорта
Импортируйте таблицу при помощи readtable
функции и FixedWidthImportOptions
объект и предварительный просмотр данных.
T = readtable(filename,opts)
T=15×7 table
LastName Gender Age Location Height Weight Smoker
____________ ___________ ___ _____________________________ ______ ______ ______
{'Smith' } Male 38 {'County General Hospital' } 71 176 true
{'Johnson' } Male 43 {'VA Hospital' } 69 163 false
{'Williams'} Female 38 {'St. Mary's Medical Center'} NaN NaN false
{'Jones' } Female 40 {'VA Hospital' } 67 133 false
{'Brown' } Female 49 {'County General Hospital' } 64 119 false
{0×0 char } <undefined> NaN {0×0 char } NaN NaN false
{'Wilson' } Male 40 {'VA Hospital' } 68 180 false
{'Moore' } Male 28 {'St. Mary's Medical Center'} NaN 183 false
{'Taylor' } Female 31 {'County General Hospital' } 66 132 false
{'Anderson'} Female 45 {'County General Hospital' } 68 NaN false
{0×0 char } <undefined> NaN {0×0 char } NaN NaN false
{0×0 char } <undefined> NaN {0×0 char } NaN NaN false
{'White' } Male 39 {'VA Hospital' } 72 2 false
{'Harris' } Female 36 {'St. Mary's Medical Center'} 65 12 false
{'Martin' } Male 48 {'VA Hospital' } 71 181 true
Введенный в:
R2017a — FixedWidthImportOptions
объект
R2018b — fixedWidthImportOptions
функция
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.