Страницы: 1
RSS
Как извлечь гос.номер из строки
 
Всем привет.
Прошу помощи в решении такой задачи. Есть список названий техники из 1С. В этом списке, в каждом названии техники, с большой вероятностью прописан государственный номер техники (если гос номер ещё не выдан,то в строке он не будет указан). Задача - извлечь номера из строки.
Для начала я макросом убираю все пробелы и дефисы, чтобы получить последовательность букв и чисел.
Из того, что получилось, я выделил несколько закономерностей:
- номер имеет длинну от 6 до 8 символов;
- последние два символа - 100% буквы также, как и 4й, 5й, и 6й символы с конца - 100% числа. То есть такой шаблон ??ЧЧЧ?ББ (Ч - число, Б - буква);
- всего существует четыре шаблона номеров: ЧЧЧЧЧББ, ББЧЧЧЧББ, ЧЧЧЧБББ, ЧЧЧЧББ
Пример файла с названиями во вложении.
P.S. база огромная, гос. номера могут быть как с дефисами, пробелами, так и с любым регистром букв, при этом буквы в номере не всегда введены кирилицей.  
Изменено: Derian Fox - 02.06.2015 07:41:05
 
Цитата
- всего существует три шаблона номеров: ЧЧЧЧББ, ББЧЧЧЧББ, ЧЧЧЧБББ
Первый вариант не соответствует тому, что
Цитата
- номер имеет длинну 7 или 8 символов;
Определитесь. И, желательно, приведите примеры строк, содержащих различные возможные варианты, а в столбце рядом - желаемый результат.
Изменено: SAS888 - 02.06.2015 06:50:33
Чем шире угол зрения, тем он тупее.
 
SAS888, Таки вы правы. Шаблонов не 3, а 4.
Обновил условие, добавил пример ожидаемого результата.
 
Еще вопрос: почему (по каким критериям) из последней строки Вашего примера выбран номер ВА8156ВС, а не 5115ВА, или 65115ВА, что тоже соответствует условиям?
Может быть есть какой-то приоритет при выборе из всех возможных вариантов? Или другие доп. условия?
Посмотрите пример во вложении. Откройте файл и запустите макрос.
В столбце "B" будут выведены все возможные варианты номеров, удовлетворяющие Вашим условиям.
Как быть?
Изменено: SAS888 - 02.06.2015 08:58:16
Чем шире угол зрения, тем он тупее.
 
Спасибо. Думаю, пока достаточно этого. С Камазом я пока очевидной закономерности не вижу.
Изменено: Derian Fox - 02.06.2015 09:13:26
 
Цитата
С Камазом я пока очевидной закономерности не вижу.
А я, и, соответственно, макрос видим.
После удаления пробелов, дефисов, запятых и т.п., получим строку "АВТОМОБІЛЬКАМАЗ65115ВА8156ВСАТП2004", в которой все варианты, соответствующие указанным Вами маскам, присутствуют:
5115ВА - ЧЧЧЧББ
65115ВА - ЧЧЧЧЧББ
8156ВСА - ЧЧЧЧБББ
ВА8156ВС - ББЧЧЧЧББ
Изменено: SAS888 - 02.06.2015 09:38:55
Чем шире угол зрения, тем он тупее.
 
камаз 65115 - это название модели
Живи и дай жить..
 
Цитата
камаз 65115 - это название модели
Как объяснить это макросу? Где гарантия, что не встретится автомобиль или трактор модели "АБВГД 12345"?
Изменено: SAS888 - 02.06.2015 10:03:07
Чем шире угол зрения, тем он тупее.
 
обычно, количество моделей гораздо меньше общего количества - можно составить таблицу
хотя, видимо, не в этом случае :)
мне кажется, удалять пробелы не надо - номера пишутся или с пробелами или без, но всегда составляют полные слова, например, вариант
Трактор Беларус- 920  23968 СА  КОВР. - 3968САК - явно не катит
Живи и дай жить..
 
Если формат и порядок записей в строке могут быть разные, да плюс к этому перепутаны буквы русского и латинского алфавита (как предупреждает автор вопроса), то никакая таблица не поможет.
И еще.
Цитата
Трактор Беларус- 920  23968 СА  КОВР. - 3968САК - явно не катит
Согласен. Такой вариант (используя пробелы) можно исключить. Но как быть, если запись такая "Трактор Беларус- 920 АА 3968 СА  КОВР."?
Чем шире угол зрения, тем он тупее.
 
Тут ещё надо проверять конечный результат с начальной записью. То есть при "Трактор Беларус- 920 23968 СА КОВР." 3968САК не подходит по причине, что мы взяли букву "К" со слова, которое стоит после пробела и при этом не учли цифру 2, которая идет вместе с 3968...Только вот не могу сформулировать это универсально. Я ещё на протяжении дня подумаю и отпишусь.
 
Цитата
Derian Fox написал: Есть список названий техники из 1С.
как он туда попал??
- либо там (или где-то ещё в организации) есть список названий техники и соотв. им гос.номеров
-  :)  либо сделать запрос в ГАИ о зарегистрированных на вашу организацию транспортных средствах с соотв гос номерами
- либо изначально помечать как-то в строке начало и конец гос.номера - например, брать в скобки - если в поле мешанИна названий и гос.номеров - чтобы макрос чётко знал, где начало, где конец того, что нужно
- либо один раз оптимизировать БД - и дальше не иметь проблем: составить таблицу транспорт-гос.номер - и работать как с БД, не препарируя каждую строчку каждый раз
Цитата
Derian Fox написал: Как извлечь гос.номер из строки
найти глазами - выделить закономерность - описать нам... в том виде, как сейчас, я вам даже глазами не скажу, где у вас трактор, а где у вас гос.номер... в любой стране есть чёткие правила формирования гос. номеров для транспортных средств, утверждённые законом и реализуемые ГАИ, которые выдаются владельцам ТС(фирмам)... либо это у вас не те номера (раз вы описываете или-или-или), либо я вас не поняла... поэтому 10 постов не могут раскрыть вашу тему
p.s. лучше изначально ввести как положено  ;) , а не дефис-пробел, как понравится...  
Изменено: JeyCi - 02.06.2015 11:56:33
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
вот, остается камаз :)
Живи и дай жить..
 
а может быть удобнее с udf
Живи и дай жить..
 
Кроме камаза ещё ПЛМ, кран, ЗІЛ, 7561ЧКМ, 534402030001 показывает "нет номера". А он есть :)
По камазу ситуация следующая. Есть закономерность, что во всех названиях сначала идет модель техники, а потом лишь ее гос номер. По этому логика такова: смотрим строку с конца, первое похожее на гос номер и будет нужный нам вариант. При этом при нахождении 6 символьного номера необходимо учесть, что там может быть 8 символьный, по этому если макрос определил 6-символьный гос номер, но при этом смог найти 8ми символьный, то велика вероятность, что второй верный.
JeyCi, В самой БД есть отдельное поле, в котором написан гос. номер, так что "оптимизировать" или "работать как с БД" вариант не катит. Есть 1С, и есть программа, которая может выгребать данные с 1С для своих каких-то задач (и к сожалению, гос номер они не используют). А есть ещё третья программа, которая взаимодействует со второй и где надо получить эти номера.
Номера прописаны одинаковые в пределах одного хозяйства/предприятия. Вот только этих предприятий более 50. А по разному они написаны (то 6 букв, то 7, то восемь, потому что есть такое понятие как "старый номер". В определенный момент было принято решения писать 4 цифры и 2 буквы. Но потом этого количества вариантов стало мало, так как с каждым годом машин становится больше, а старые гос номера не перевыдаются (машина на свалке, но гос номер четко "умрет" вместе с машиной, его не перевыпустят и не дадут кому-то другому). Вот потом и мудрили, то символ добавят, то цифры заменят буквами...Вообщем в определенный период времени был определенный стандарт этого номера.
Цитата
JeyCi написал: найти глазами - выделить закономерность - описать нам...
Я вроде как бэ это и делаю...
Изменено: Derian Fox - 21.07.2015 10:06:28
 
с зилом там запятая влезла...
с камазом попробую ваше предложение
Живи и дай жить..
 
Я там пост выше обновил, дополнив логику поиска...
 
вот
с 8мизначными - просто поставил проверку наидлиннейшего(потенциально) вперед - вроде должно работать
обновил только udf
Изменено: Слэн - 02.06.2015 14:31:21
Живи и дай жить..
 
вроде работает хорошо. Огромное спасибо :)
 
Почему прикрепленные файлы перестали скачиваться?
 
редко, но бывает... может, какие тех.работы на сайте... попробуйте позже (у меня тоже пока не скачивается - почему-то только ваша ветка)
Изменено: JeyCi - 20.07.2015 13:53:00
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
нашла у себя - могу выложить повторно - вроде бы из #18
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Спасибо :)
Страницы: 1
Читают тему
Loading...