Skip to main content

Исправление ручного ввода автомобильных номеров РФ

Project description

gosnomer

Нормализация для госномеров автомобилей и других транспортных средств РФ. Автоматическое исправление ошибок ручного ввода госномера.

  • Удаление пробелов
  • Перевод в верхний регистр
  • Перевод латиницы в кириллицу
  • Проверка допустимости символов
  • Проверка допустимости формата номера
  • Исправление ошибок в заменой нуля на букву "О" и наооборот
  • Проверка правильности трехзначного кода региона
  • Проверка, что числовые последовательности не состоят только из нулей

Использование:

def normalize(no, prefer=None) -> str: """Берет на вход государственный регистрационный номер транспортного средства с ошибками ручного ввода и возвращает исправленный госномер.

Поднимает ValueError, если в номере, подаваемом на вход, содержатся ошибки, которые
невозможно исправить.

Args:
    no (str): строка с номером, которую требуется нормализовать / исправить.
    prefer (list[str]): перечень предпочитаемых форматов в порядке предпочтения.
        Нужно для случаев, когда номера можно истолковать по-разному.
        Например, `["X999XX999", "X999XX999"]` отдаст предпочтение
        трактовке номеров, как автомобильных (тип 1). А входящая строка "о001тр98"
        будет нормализована как "О001ТР98" (формат номера автомобиля),
        а не как "0001ТР98" (формат номера мопеда).

        Если не указано, то берется первый попавшийся из подошедших форматов.

Returns:
    str: исправленная, приведенная к стандарту строка с номером.

Raises:
    ValueError: если строку не удается исправить, т.е. она содержит символы,
        которым невозможно привести в соответствие один из стандартных,
        или вся строка имеет неправильный формат.

Примеры использования:

>>> normalize ('YY1239O')
'УУ12390'

>>> normalize (12340078)
'1234ОО78'

>>> normalize ('о123оо9о9')
'О123ОО909'

>>> normalize ('000100102')
'О001ОО102'

>>> normalize ('   оо12345  ')
'ОО12345'

>>> normalize("о001тр98", ["9999XX99", "XX99XX99", "X999XX99"])
'0001ТР98'

>>> normalize ('')
Traceback (most recent call last):
...
ValueError: Недопустимый формат: ""

>>> normalize ('000000000')
Traceback (most recent call last):
...
ValueError: Номер не может содержать числовые последовательности, состоящие только из нулей

>>> normalize ('000100001')
Traceback (most recent call last):
...
ValueError: Первая цифра трехзначного региона не может быть нулем

>>> normalize ('ГН99900')
Traceback (most recent call last):
...
ValueError: Недопустимый символ: "Г"

>>> normalize ('НН01ВВ67ОО78')
Traceback (most recent call last):
...
ValueError: Недопустимый формат: "XX*9XX99**99"

>>> normalize (12345678)
Traceback (most recent call last):
...
ValueError: Недопустимый формат: "99999999"

>>> normalize("о001тр98", ["99999999"])
Traceback (most recent call last):
...
ValueError: Параметр prefer содержит недопустимые форматы: {'99999999'}

Модуль также содержит наборы ALLOWED_LETTERS, ALLOWED_NUMBERS, ALLOWED_SYMBOLS и ALLOWED_FORMATS:

>>> 'Ю' in ALLOWED_LETTERS
False

>>> 1 in ALLOWED_NUMBERS
False

>>> '1' in ALLOWED_NUMBERS
True

>>> all([x in ALLOWED_SYMBOLS for x in ALLOWED_NUMBERS])
True

>>> 'Х999ХХ99' in ALLOWED_FORMATS
True

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gosnomer-0.0.9.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

gosnomer-0.0.9-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file gosnomer-0.0.9.tar.gz.

File metadata

  • Download URL: gosnomer-0.0.9.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gosnomer-0.0.9.tar.gz
Algorithm Hash digest
SHA256 db8f3f78e224db0d3506b4156300145d0182e376b8ac9969d95f4e62483c079a
MD5 14cfad5f9665ab6a09f0c64008ba2dcb
BLAKE2b-256 17a00d0bccab6393a901b84469415abadabc8c4d5d953b5b941df4aba4bdb8b6

See more details on using hashes here.

File details

Details for the file gosnomer-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: gosnomer-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gosnomer-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9ea2865538d82f54a9e0eaf496d6a9d3bcd3f75dba6ffb5e2ac65cc766d87231
MD5 b7f8ee8ab01a4cbb8ff7934752fbc909
BLAKE2b-256 01f20dc6666377f0ad68891f9521cd82d8da76e503e7baca78e03726012aa13b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page