Profile

coolwolf0: (Default)
coolwolf0

May 2025

S M T W T F S
    123
456789 10
11121314151617
18192021222324
25262728293031

Custom Text

Мой банк давно поддерживает экспорт списка операций текущего счета в формат Excel. Внутри это не совсем Excel, а гибрид HTML и XMLNS (типа, для простоты текстовой генерации). Я примерно раз в месяц скачиваю такой файлик для контроля движений на счету. И вот этих табличек накопилось целые кучи, аж с 2008 года. Поставил я перед собой цель: избавиться от неудобных файликов и слить всё в одну базу данных. Цель - не рыскать в поисках той или иной транзакции, объединить естественным образом пересекающиеся по времени отрезки и получить сплошную картину по годам.

И вот тут встала проблема совместимости форматов. Дело в том, что с 2008 года банк успел трижды поменять внутренний формат этих самых файлов. С точки зрения Excel совместимость сохранилась, но вот формально распарсить содержимое с первой попытки не удалось. В качестве парсера использовался Пайтон-модуль со странным названием "BeautifulSoup". Как оказалось, его смутил несовместимый трюк с тэгами, когда <img ...> представляется в виде <!img ...>. В результате всё дерево тэгов "поплыло" и содержимое оказалось недоступным. Пришлось применить к текстовому буферу глобальную замену тэга с восклицательным знаком на его же, но без богопротивной закорючки. После этого (немного поигравшись с атрибутами и фильтрацией пустых строк) удалось на 100% распознать все три вариации форматов. Это чудо: без танцев с бубнами, путём установки стандартного модуля, удалось прочитать данные более чем 10-летней давности!

Ясное дело, что будь таблички в каком-нибудь CSV, таких глупостев вообще удалось бы избежать, но в любом случае, победа стандартов очевидна. Теперь осталось придумать, во что эти данные конвертировать. Пока вырисовывается очевидное решение - SQLite3. Тем более, что абстрактный класс по ведению баз с произвольной схемой я уже накатал (для каталогизатора домашних коллекций).

Так что продолжение следует...

(no subject)

Date: 2019-07-03 08:26 am (UTC)
From: [identity profile] the-drmad.livejournal.com
Горький опыт показывает, что все форматы плывут. Заавтоматизируешь парсинг, а он уже неактуален. Надо какую-то общую расширенную схему составлять и парсить, которая включала бы 1) нынешнюю, 2) все ранние и 3) даже возможные пути развития нынешней.

Expand Cut Tags

No cut tags

Style Credit

OSZAR »