Дорабатываем Консультант+. Работа с текстом на python. Часть 1.

   Мне, как юристу, достаточно долго проработавшему со справочной программой “Консультант+”, всегда не хватало обыкновенной функции в этой системе. Данная функция заключалась в следующем. При появлении каких-либо изменений в нормативном акте, сотрудники К+ выкладывают обзор изменений в виде двух столбцов текста:

image
Столбец слева – то, что было ранее, справа столбец – норма, которая действует теперь. Сейчас функционал обновили и изменения выделяются жирным шрифтом и их сразу видно. Это все очень удобно. Но есть и неудобные вещи. Во-первых, некоторые нормы не приводятся, т.к. их объем слишком велик для сотрудников К+ и приходится ходить по ссылкам системы, во-вторых, нельзя просто взять и скопировать эти два столбца, вставив их в обычный excel. Возможно, это сделано намеренно, чтобы пользователи активнее работали с системой, в том числе ничего оттуда не переносили. Что ж придется это исправить.
Для примера, который скормим нашей будущей программе, возьмем из К+ изменения в Закон «Об АО». Этот закон часто меняют, поэтому будет с чем поработать.
Сохраним изменения в обычном txt файле. Получится примерно следующее:

clip_image002

Итак, видно, что каждое изменение отделено от другого сплошной чертой, которая после сохранения приняла вид многочисленных “???”. Так же имеется заголовок изменения, с которым придется считаться. Все выглядит просто за исключением отдельных моментов.
Так, попадаются изменения, которые имеют следующий вид:
clip_image002[5]

Кроме того, дело усугубляется тем, что отдельные изменения существенно отличаются по длине.
Приступим.
Создадим новый файл consult.py и внесем в него первые строки:
clip_image002[7]
Модуль openpyxl уже знаком, он позволяет работать с Excel, а вот два других новые. Их функция корректно обработать русские символы, которые зачастую некорректно читаются программами.
Заранее создадим новый пустой файл excel вне программы, назвав его например редакция2.xlsx. Данный файл мы будем открывать нашей программой и записывать туда данные. Это будет наш итоговый файл.
Итак, программа открывает excel файл, заходит в него:
clip_image002[9]
Также выше мы создаем 3 пустых списка, куда будем собирать данные: test,test2,test3.
Далее в переменную ‘а’ мы поместим все, что может попасться в виде наименования изменения. В y – будет разделительная черта. Она одинакова по длине:
clip_image002[11]

Теперь самое интересное.
clip_image002[13]
Мы открыли файл редакция.txt в кодировке cp1251. Каждую строку очистили от пробелов с конца и начала методом strip.
Если строка начинается со слова «старая» мы ее пропускаем. Зачем нам сохранять «старая» и «новая», это и так ясно. Далее мы делим строку: с начала и до 35 знака и с 39 знака и до конца. То есть мы исключаем пробел в середине:
clip_image002[15]

Содержимое пробела в середине строки мы заносим в col3, т.к. это может быть и не пробел, если изменение записано в одну строчку всплошную:
clip_image002[17]
Далее, если строка начинается с заголовка изменения (эти заголовки мы записали в переменную а), то мы сразу пишем эту строку в excel без каких-либо дроблений и добавляем строку – x+=1 (или x=x+1).Пустые строки, которые нам попадаются, мы пропускаем.

admin

Оставить отклик

Ваш адрес эл.почты не будет опубликован.