я пытаюсь прочитать в файле с содержит тысячи строк формата:Как TextScan с несколькими разделителями
AAAAAAAA 2013.99.2314.029 0 OFF N
который является разделителями табуляции файл. Последний столбец не волнует. Два столбца до этого являются переменными, поэтому я читаю их как строки. Моя главная проблема - вторая колонка. Это число, которое делится на несколько частей.
2013.99.2314.029
is year 2013, день 99, второй 2314.029.
Я хочу использовать TextScan читать весь файл сразу, но как-то разделить, что сложная строку даты, как я прочитал в
В настоящее время у меня есть сканстрока:.
SCAN_STR = '%s\t%f.%f\t%s\t%s\t%*s'
Каких считывает строку даты в два поплавка. Мне бы очень хотелось прочитать его в двух ints и float. Но с использованием
SCAN_STR = '%s\t%d.%d.%f\t%s\t%s\t%*s'
Усекает его до 2013 года и 2314 и испортит остальную часть линии. Я попытался убежать. с '.' но это вызывает ошибку.
Любые предложения? Я бы хотел сделать это, поскольку он сканируется из-за большого размера файла. При попытке изменить типы больших наборов данных память работает на низком уровне.
EDIT:
Действительно мне нужна сканстроку для 2013.99.2314.029 вернуть два целых числа и с плавающей точкой.
'%d.%d.%f'
Не работает. Также не используется разделитель как.. Я тоже пробовал% u. Он округляет десятичную цифру, когда читает их.
Le sigh.
Первое, что приходит на ум: вместо '% d' вы можете попробовать'% [0-9] '. Тем не менее, это будет читать целые числа как строки, вам придется преобразовать их в числа позже (_e.g_ используя 'str2num'), если вам нужно их числовое значение. –
Использовать textscan один раз для всей строки, затем textscan снова в поле, которое вы хотите разделить дальше? – Ansari
Я ненавижу textscan. Почему бы им не поместить приличный синтаксический анализ текста в Matlab? – Bitwise