estimated
Как таковой, парсинг HTML мне был не нужен. Задача была склеить книгу, состоявшую из 4 тысяч html файлов в иерархическую структуру по разделам, главам и параграфам; поправить где надо <head>; унифицировать оформление; переиндексировать гиперссылки соответствующим образом и экспортировать toc для компиляции chm.
Я уже не помню сложностей возникших у меня с vb и js, кажется всё вертелось вокруг хэширующих типов (~map ~dictionary), сортировок и регулярных выражений. В питоне сразу наткнулся на удобный метод dictionary.setdefault() и нужную alphanumeric сортировку, что на 50% и решило проблему.
Питон легко подкючается и к WSH и к COM. Например, что бы подключиться к COM-объекту достаточно 2х строчек, а дальше рулишь им как обычно, через exposed свойства и методы:
import win32com.client as w32c
myftp = w32c.Dispatch(r"CuteFTPPro.TEConnection")
То, что все функции должны быть определены раньше их использования, меня тоже раздражает. Как вариант, можно все вспомогательные конструкции вынести в отдельный модуль.
Ну и ещё раз скажу, что в программировании я вообще никакой. Т.е. это даже не хобби, а только если нужда заставит.
Как таковой, парсинг HTML мне был не нужен. Задача была склеить книгу, состоявшую из 4 тысяч html файлов в иерархическую структуру по разделам, главам и параграфам; поправить где надо <head>; унифицировать оформление; переиндексировать гиперссылки соответствующим образом и экспортировать toc для компиляции chm.
Я уже не помню сложностей возникших у меня с vb и js, кажется всё вертелось вокруг хэширующих типов (~map ~dictionary), сортировок и регулярных выражений. В питоне сразу наткнулся на удобный метод dictionary.setdefault() и нужную alphanumeric сортировку, что на 50% и решило проблему.
Питон легко подкючается и к WSH и к COM. Например, что бы подключиться к COM-объекту достаточно 2х строчек, а дальше рулишь им как обычно, через exposed свойства и методы:
import win32com.client as w32c
myftp = w32c.Dispatch(r"CuteFTPPro.TEConnection")
То, что все функции должны быть определены раньше их использования, меня тоже раздражает. Как вариант, можно все вспомогательные конструкции вынести в отдельный модуль.
Ну и ещё раз скажу, что в программировании я вообще никакой. Т.е. это даже не хобби, а только если нужда заставит.