Модераторы: pythonwin, Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распарсить коды ОКТМО 
:(
    Опции темы
polin11
Дата 30.11.2018, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



вопрос из области кодирования информации
Есть справочник ОКТМО, можно взять 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, указывающие ступень классификации и вид кодируемого объекта. 
В этом случае применяется параллельный метод кодирования.

Что за последовательный и параллельный метод кодирования объектов классификации???
Может кто-то сталкивался с такой проблемой и подскажет как распарсить такой массив информации(получить родителя)?


    


PM MAIL   Вверх
Romikgy
Дата 30.11.2018, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7248
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 142



так  хотели ?
71 850 000:71 800 000
71 871 000:71 850 000
71 872 000:71 850 000
71 873 000:71 850 000
71 874 000:71 850 000
71 875 000:71 850 000
71 876 000:71 850 000
71 877 000:71 850 000
71 878 000:71 850 000
71 879 000:71 850 000
71 883 000:71 850 000
71 884 000:71 850 000
71 885 000:71 850 000
71 887 000:71 850 000
71 900 000:75 000 000
71 910 000:71 900 000
71 913 000:71 900 000
71 913 400:71 913 000
71 913 403:71 913 400
71 913 406:71 913 400
71 913 412:71 913 400
71 916 000:71 900 000
71 916 100:71 916 000
71 916 151:71 916 100
71 916 153:71 916 100
71 916 156:71 916 100
71 916 400:71 916 000
71 916 402:71 916 400
71 916 403:71 916 400
71 916 404:71 916 400
71 916 412:71 916 400
71 916 414:71 916 400
71 916 423:71 916 400
71 916 700:71 916 000
71 918 000:71 900 000
71 918 100:71 918 000
71 918 169:71 918 100



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Google
  Дата 16.12.2018, 08:43 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1079 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.