spider
Участник

Offline
Сообщений: 48
|
Здравствуйте!
Пытаюсь импортировать файл с числами в столбцах фиксированной ширины, разделенных пробелами. Все числа, как это водится, выровнены по десятичной точке. В первой колонке либо числа, опять же выровненные по точке, либо слова, выровненные вправо. ПОэтому некоторые строки имеют пробелы в начале. Выглядят файлы как то так:
если в первой колонке числа 0.0 1.1 123.0 2.2 45.0 3.3 678.0 4/4
если в первой колонке слова
BCD 0.0 1.1 ABCВ 123.0 2.2 BCD 45.0 3.3 ABCD 678.0 4/4
В обоих случаях поля в строках, начинающихся с пробелов (1,3), сдвигаются на одно поле вправо.
Прилагаю кусок оригинального файла
|
|
|
Записан
|
|
|
|
CyberDaemon
|
Здравствуйте!
Пытаюсь импортировать файл с числами в столбцах фиксированной ширины, разделенных пробелами. Все числа, как это водится, выровнены по десятичной точке. В первой колонке либо числа, опять же выровненные по точке, либо слова, выровненные вправо. ПОэтому некоторые строки имеют пробелы в начале. Выглядят файлы как то так:
если в первой колонке числа 0.0 1.1 123.0 2.2 45.0 3.3 678.0 4/4
если в первой колонке слова
BCD 0.0 1.1 ABCВ 123.0 2.2 BCD 45.0 3.3 ABCD 678.0 4/4
В обоих случаях поля в строках, начинающихся с пробелов (1,3), сдвигаются на одно поле вправо.
Прилагаю кусок оригинального файла
Куда импортировать? Здравствуйте!
Пытаюсь импортировать файл с числами в столбцах фиксированной ширины, разделенных пробелами. Все числа, как это водится, выровнены по десятичной точке. В первой колонке либо числа, опять же выровненные по точке, либо слова, выровненные вправо. ПОэтому некоторые строки имеют пробелы в начале. Выглядят файлы как то так:
если в первой колонке числа 0.0 1.1 123.0 2.2 45.0 3.3 678.0 4/4
если в первой колонке слова
BCD 0.0 1.1 ABCВ 123.0 2.2 BCD 45.0 3.3 ABCD 678.0 4/4
В обоих случаях поля в строках, начинающихся с пробелов (1,3), сдвигаются на одно поле вправо.
Прилагаю кусок оригинального файла
Натравить на текст awk, или sed предварительно. Убрать лидирующие пробелы. Может макрос какой состряпать, что бы при открытии заменял "^ " на "^".
|
|
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
Куда импортировать?
В лист Calc. УУПС... ошибся топиком. Натравить на текст awk, или sed предварительно. Убрать лидирующие пробелы. Может макрос какой состряпать, что бы при открытии заменял "^ " на "^".
Макрос, который бы при назначении пробельного материала (пробел, табуляция) в качестве разделителя .csv в диалоге выбора галку предложил поставить, типа: "[ ] - игнорировать пробелы в начале строки", было бы неплохо. Но, увы, я такой не напишу -- бейсика не знаю. Придется sed.
|
|
|
Записан
|
|
|
|
rami
|
У вас все файлы без расширения? Как вы хотите открывать файлы? Вот такой результат подойдёт?
|
|
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
У вас все файлы без расширения? Как вы хотите открывать файлы? Вот такой результат подойдёт?
В линуксовом офисе все открывается -- ему точки в имени по барабану. Можно файлу дать имя из одних пробелов и все будет пучком. Я их открываю через меню "Вставить-Лист_из_файла". Несколько файлов в один документ с несколькими листами. Результат такой и надо. Я сейчас для этого седом пользуюсь "sed -i s/^\ *// file".
|
|
|
Записан
|
|
|
|
rami
|
В линуксовом офисе все открывается -- ему точки в имени по барабану. Можно файлу дать имя из одних пробелов и все будет пучком. Это не тот ответ, что я ожидал получить, я хотел узнать, вы получаете файлы с типовым именем log-<порядковый номер> без расширения? Я сейчас для этого седом пользуюсь "sed -i s/^\ *// file". Проблема уже решена?
|
|
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
log-[/b]<порядковый номер> без расширения?
fopen() + fprintf() Проблема уже решена?
Руками через sed.
|
|
|
Записан
|
|
|
|
JohnSUN
|
Проблема уже решена?
Руками через sed. И это печально... Не обращал внимания на переключатель Фиксированная ширина/С разделителями? По себе знаю, когда постоянно пользуешься "С разделителями", как-то забываешь о других возможностях... Параметры разделения Указывает, используются ли в качестве разделителей данных разделители или фиксированная ширина строк. Фиксированная ширина Разделяет данные с фиксированной шириной (одинаковым числом символов) на столбцы. Щелкните линейку в окне предварительного просмотра, чтобы задать ширину. С разделителями Выберите разделитель для данных. (и далее по тексту)
|
|
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
Не обращал внимания на переключатель Фиксированная ширина/С разделителями? По себе знаю, когда постоянно пользуешься "С разделителями", как-то забываешь о других возможностях...
Это я самое первое попробовал. Не работает, если "фиксированная ширина" устроена табуляциями. Только если пробелами. Табуляция выглядит, как стрелочка и принимается как один символ фиксированной ширины, поэтому колонки сбиваются.
|
|
|
|
rami
|
Не работает, если "фиксированная ширина" устроена табуляциями. Только если пробелами. Табуляция выглядит, как стрелочка и принимается как один символ фиксированной ширины, поэтому колонки сбиваются. После вашего "Руками через sed." ещё хорошо выглядит. Импорт текстового файла -- ведущие пробелы в первой колонке "ломают строй" Это не пробелы что-то там ломают, а вы ломаете. Выложеный вами файл log-04 прекрасно открывается как предлагает JohnSUN.
|
|
|
Записан
|
|
|
|
JohnSUN
|
Да-да, я ведь тоже от образца в log-04 отталкивался... Откуда табуляторы-то взялись? Если они - tab'ы - всегда будут, то и разговаривать не о чем: этот формат офис всасывает вообще без вопросов. Главное, не забыть "птичку" на нужном разделителе поставить
|
|
« Последнее редактирование: 11 Ноябрь 2014, 12:34 от JohnSUN »
|
Записан
|
|
|
|
rami
|
JohnSUN, у меня файл log-04 без расширения CSV по умолчанию открывается в текстовом редакторе, а если указать LibreOffice, то в Writer. С расширением CSV открывается в Calc. Макрос открывает правильно и без расширения. Откуда табуляторы-то взялись? "Руками через zad." Извиняюсь за мой французский.
|
|
« Последнее редактирование: 11 Ноябрь 2014, 12:49 от rami »
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
Походу, что-то вас разозлило. Еще раз -- если в первой колонке число или текст выровнены вправо, файл не импортируется правильно, чем там столбцы не размечай -- чеками или фиксированным форматом. 1) фиксированный формат не учитывает, что табулятор имеет переменную ширину; 2) нет возможности пропустить пробелы перед первым непробельным символом в строке. Чтобы решить проблему (2) я прогоняю файлы через сед, чтобы они импортировались правильно. Если у кого-нибудь есть лучшее решение, или автоматизация, я с удовольствием приму.
|
|
|
Записан
|
|
|
|
spider
Участник

Offline
Сообщений: 48
|
Да-да, я ведь тоже от образца в log-04 отталкивался... Откуда табуляторы-то взялись? Если они - tab'ы - всегда будут, то и разговаривать не о чем: этот формат офис всасывает вообще без вопросов. Главное, не забыть "птичку" на нужном разделителе поставить
Табуляторы и пробелы -- это совершенно один и тот же материал с точки зрения вывода, в первом случае нерастяжимый, во втором растяжимый. В зависимости от того, нужна ли растяжимость при выводе или нет, используется либо тот, либо другой. Насчет "всасывает tab'ы без вопросов", Вы погорячились. Не "всавывает" выровненное вправо в первой колонке даже с вопросами. Что касается текста в первой колонке, то хотя это и коряво, его и по левой границе можно упереть, но как быть с числами? Числа всегда выравниваются по десятичной точке.
|
|
|
Записан
|
|
|
|
JohnSUN
|
Походу, что-то вас разозлило.
Честно? Да... Даёшь один образец данных, сам экспериментируешь с другим, а мы полными кретинами выглядим - элементарную операцию сделать не можем (баг повторить) Табуляторы и пробелы -- это совершенно один и тот же материал с точки зрения вывода
Э-э-э... пардоньте... с чьей, говорите, точки зрения? Насчет "всасывает tab'ы без вопросов", Вы погорячились. И не "выкай" на меня, не ссорились...  Не "всасывает" выровненное вправо в первой колонке даже с вопросами. Что касается текста в первой колонке, то хотя это и коряво, его и по левой границе можно упереть, но как быть с числами? Числа всегда выравниваются по десятичной точке.
Повтори образцы данных... С пробельным выравниванием и с табуляторным. Не может быть, чтобы на такую задачу у тебя ушло столько времени! Ты же уже столько времени с этими CSV возишься, уже давно руку набил... Вдохновения нет, что ли?
|
|
|
Записан
|
|
|
|
|