Показаны сообщения с ярлыком csv. Показать все сообщения
Показаны сообщения с ярлыком csv. Показать все сообщения

FreeBSD: CVS умер. Да здравствует SVN!

В тот момент, когда все уже перешли на Git или Darcs, сообщество разработчиков FreeBSD решило, наконец распрощаться c CVS. И перейти на Subversion ака SVN. Репозитории с исходными кодами системы, доступные ранее с помощью CVSUp, больше не содержат ничего, кроме файла README.txt. По словам одного из разработчиков FreeBSD:
CVSup has served us well, but it is time to move on 
(CVSUp хорошо нам служил,  но нужно двигаться дальше)

Страсти по CSV


В приступе очередного скриптописания столнулся с адскими проблемами при работе с CSV. Входные данные просты до безобразия: взять данные из Excel, заметьте,- простые данные, 4 столбца безо всяких извращений вроде переводов строки внутри значений или внутренних кавычек,- переложить это в CSV, прочесть скриптом на python, преобразовать по алгоритму. Компот и второе (т.е. прочесть и преобразовать),- оказалось меньшим из зол, а вот CSV...

Разделение строки на части в Excel

Кнопка "Текст по столбцам" в Excel
Случайно обнаружил, что в MS Excel нет формулы для разделения строки на части с использованием символа или подстроки в качестве разделителя. Нет вообще, как таковой. В любом нормальном языке программирования есть, а в Excel нет. Для случаев, когда строка представляет из себя число с дробной частью,- там на помощь приходит деление, умножение и остаток, знакомые со школы, хотя для неопытного пользователя и эта задача может оказаться непосильной. А если разделить нужно именно текст? Формула для сращивания строк,- есть, а для разделения,- нет. Гуглинг по вопросу даёт совершенно дикие варианты, типа вот такого:


Формула (стиль A1):
=ЕСЛИ(ЕОШ(НАЙТИ(",";A1));A1;ПСТР(A1;1;НАЙТИ(",";A1)-1))

Формула (стиль R1C1):
=ЕСЛИ(ЕОШ(НАЙТИ(",";RC[-1]));RC[-1];ПСТР(RC[-1];1;НАЙТИ(",";RC[-1])-1))


К счастью, такая задача нечасто возникает, поскольку в большинстве случаев исходные данные можно сохранить как файл и прогнать через импорт, что вообщем-то решает задачу. К тому-же, если разделение строк нужно разово, а не в виде формулы для динамического пересчёта, то всё не так плохо:
в последних версия Excel есть волшебная кнопочка "Текст по столбцам" (у меня находится именно в виде кнопки в разделе "Данные"). Собственно делает практически тоже самое, что и импорт файлов в формате типа CSV,- предлагает выбрать разделитель, даёит возможность настроить формат получившихся столбцов и всё такое.

Но для решения этой простейшей задачи я потратил не меньше получаса.