fbpx

Парсинг кодов ОКТМО

143 просмотраОКТМО
0
0 Комментариев

вопрос из области кодирования информации
Есть справочник ОКТМО, можно взять http://www.gks.ru/metod/oktmo.html 
Справочник имеет иерархическую структуру. На вход получаю последовательно строки, для каждой строки родитель записи был получен ранее:
37 000 000    		Муниципальные образования Курганской области
37 600 000    		Муниципальные районы Курганской области/
37 602 000    		Альменевский муниципальный район
37 602 400    		Сельские поселения Альменевского муниципального района/
37 602 442   		- Шариповский сельсовет
  Нужно для каждой записи найти родителя по иерархии, для каждой записи родитель идет раньше, чем сама запись, например
37 000 000    корень
37 600 000    родитель 37 000 000
37 602 000    родитель 37 600 000 	
37 602 400    родитель 37 602 000  	
37 602 442    родитель 37 602 400
Была идея у кода справа заменять по очереди цифры нулями и искать из списка ранее полученных записей совпадение с родителем, как-то так
def f(code):
 index = len(code.rstrip('0')) - 1
 parent = ''
 while index > 0:
  code_new = code[:index].ljust(8, '0')
  # records_list - список из ранее полученных кодов в которых точно есть родитель
  if code_new in records_list:
   parent = code_new
   break
  index -= 1
 return parent
 Но эта логика не работает, как например у кода 71 871 000 родитель 71 850 000. 
71 850 000  	Городские округа Ханты-Мансийского автономного округа - Югры/ 
71 871 000    	- город Ханты-Мансийск	
 В приказе который утверждает ОКТМО, сказано 
Формула структуры кода ОКТМО в первом разделе:
ХХ ХХХ ХХХ,
где: 1, 2 знаки идентифицируют объекты классификации первой ступени классификации;
3 – 5 знаки  идентифицируют  объекты классификации второй ступени классификации;
6 – 8 знаки  идентифицируют объекты классификации третьей ступени классификации;
На первой ступени классификации используется порядковый метод кодирования объектов классификации.
На второй и третьей ступенях классификации применяется последовательный метод 
кодирования объектов классификации. При этом разряды 3 и 6 отведены под признаки 
соответственно Р1 и Р2, указывающие ступень классификации и вид кодируемого объекта. 
В этом случае применяется параллельный метод кодирования.
 Что за последовательный и параллельный метод кодирования объектов классификации???
Может кто-то сталкивался с такой проблемой и подскажет как распарсить такой массив информации(получить родителя)?


Добавить комментарий

0 Answers

Python Опубликовано 26.04.2019
Напишите свой ответ на данный вопрос.
Scroll Up