Skip to main content

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

Metadata

Release files for gosnomer 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gosnomer 0.0.9
File Size Uploaded
gosnomer-0.0.9.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gosnomer 0.0.9
File Interpreter ABI Platform
gosnomer-0.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 13.6 kB

Release files / gosnomer-0.0.9.tar.gz

Download URL gosnomer-0.0.9.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
db8f3f78e224db0d3506b4156300145d0182e376b8ac9969d95f4e62483c079a
BLAKE2b-256 checksum
How to use checksums
17a00d0bccab6393a901b84469415abadabc8c4d5d953b5b941df4aba4bdb8b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / gosnomer-0.0.9-py3-none-any.whl

Download URL gosnomer-0.0.9-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ea2865538d82f54a9e0eaf496d6a9d3bcd3f75dba6ffb5e2ac65cc766d87231
BLAKE2b-256 checksum
How to use checksums
01f20dc6666377f0ad68891f9521cd82d8da76e503e7baca78e03726012aa13b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page