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)
| File | Size | Uploaded | |
|---|---|---|---|
| gosnomer-0.0.9.tar.gz | 6.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|