Чтение CSV-файла с текстом с использованием textread - PullRequest
1 голос
/ 07 марта 2019

Я читаю CSV-файл в Matlab, используя функцию textread, и храню значения в ячейках строкового и плавающего типов.

[string1, string2, values] = textread('/path/xyz.csv', '%s %s %f', 'headerlines', 1);

Данные имеют три столбца. Два из них, я полагаю, имеют строковый тип, а один - float.

Пример данных

@timestamp  host    value
March 5th 2019, 13:41:54.879    tscompute1  0.399
March 5th 2019, 13:41:54.879    tscompute1  0.599
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  0.2
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  0
March 5th 2019, 13:41:54.879    tscompute1  100
March 5th 2019, 13:41:54.879    tscompute1  0.4

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

Значения, хранящиеся в string1, выглядят следующим образом

'"March'
','
'"March'
','
'"March'
','
'"March'
','

Значения, хранящиеся в string2, выглядят следующим образом

'5th'
'13:41:54.879",tscompute1,0.399'
'5th'
'13:41:54.879",tscompute1,0.599'
'5th'
'13:41:54.879",tscompute1,0'
'5th'
'13:41:54.879",tscompute1,0.2' 

Значения, хранящиеся в значениях, выглядят следующим образом

2019
0
2019
0
2019
0
2019
0

1 Ответ

1 голос
/ 07 марта 2019

Кажется, что в вашем тексте есть несовместимые разделители, дата отделяется от времени запятой, а время, имя "tscompute1" и число разделяются пробелами.

Самое простое - прочитать каждую строку в виде шести элементов, каждый из которых разделен пробелами, пять из которых являются строками, а шестой - числом.

[s1, s2, s3, s4, s5, values] = textread('/path/xyz.csv', '%s %s %s %s %s %f', 'headerlines', 1);

Это позволяет вам получить дату (объединить строки в s1-s3, удалить запятую), время (s4), имя (s5) и значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...