Я работаю с данными о номерных знаках автомобилей из моей страны, и мне нужно проверить, нет ли ошибок в написании номерного знака. Текущая и правильная форма состоит из трех букв и трех цифр (AAA000), но я видел такие значения, как одна буква или все цифры. Пока я могу только знать, все ли это цифры или буквы. Извините, у меня нет кода, чтобы поделиться, я все еще слишком нуб.
Может ООО003?
Эта функция должна решить вашу проблему:
df["Placa"].apply(lambda x: True if x[:3].isalpha() and x[3:].isdigit() and len(x) == 6 else False)
isalpha
верно для строчных букв и некоторых символов Юникода. Вероятно, это не то, что хочет ОП.
Предположим, что пластина - это список, вы можете сделать это с помощью регулярного выражения:
>>> import re
>>> plates = ['000003', 'TPU553', 'TPU374', 'SVM978']
>>> list(filter(lambda x : re.match(r'\D{3}\d{3}',x),plates))
['TPU553', 'TPU374', 'SVM978']
[A-Z]{3}
было бы лучше, чем \D{3}
, поскольку \D
соответствует гораздо большему, чем просто буквам
также обратите внимание, что шаблон будет соответствовать ABC123#.
Это мой взгляд на ваш вопрос. Сделал функцию, которая проверяет, являются ли 3 первых символа буквами и так далее со следующими 3 символами.
def checkcarplate(carplate):
for i in range(len(carplate)):
if i<3:
if not carplate[i].isalpha():
print('error')
break
elif i>2:
if not carplate[i].isdigit():
print('error')
break
elif i==len(carplate)-1:
print('ok')
carplate = "A1C123"
checkcarplate(carplate)
carplate = "ABC123"
checkcarplate(carplate)
Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Необходимо проверить длину пластины. Если он короче или равен 3 (например, «AB»), он ничего не напечатает. Если он длиннее 6, например «ABC12345», будет напечатано «ОК». Вместо «elif i>2:» я бы предложил «else:» — «если» уже означает, что это 3 или более. См. Также комментарии Уильяма к другим ответам.
Регулярное выражение --
re.match(r"[A-Z]{3}\d{3}", "AAA000")