Исправление ручного ввода автомобильных номеров РФ
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db8f3f78e224db0d3506b4156300145d0182e376b8ac9969d95f4e62483c079a
|
|
| MD5 |
14cfad5f9665ab6a09f0c64008ba2dcb
|
|
| BLAKE2b-256 |
17a00d0bccab6393a901b84469415abadabc8c4d5d953b5b941df4aba4bdb8b6
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ea2865538d82f54a9e0eaf496d6a9d3bcd3f75dba6ffb5e2ac65cc766d87231
|
|
| MD5 |
b7f8ee8ab01a4cbb8ff7934752fbc909
|
|
| BLAKE2b-256 |
01f20dc6666377f0ad68891f9521cd82d8da76e503e7baca78e03726012aa13b
|