#python #string #format #postal
#python #строка #форматировать #почтовый
Вопрос:
Мне просто интересно, как можно написать код, который проверяет строку? Например, пользователь вводит почтовый индекс (строку). я должен убедиться, что она соответствует формату L # L # L # L # L-> представляет только букву, а #-> представляет только число, не десятичное … если нет, попросите пользователя ввести еще раз
Комментарии:
1. Ознакомьтесь с модулем регулярных выражений
Ответ №1:
Строковые методы дополнительная информация
Для вашего примера вы могли бы разрезать строку с шагом 2, проверяя каждую вторую, является ли это цифрой / буквой:
.isdecimal
проверяет наличие символов, составляющих системы счисления с базовым значением 10 (0-9).
.isalpha
проверяет наличие букв (A-Z)
test_good = 'L5L5L5'
test_bad = 'LLLLLL'
def check_string(test):
if test[0::2].isalpha() and test[1::2].isdecimal():
return True
else:
return False
Протестируйте это:
check_string(test_good)
>>>True
Отрицательный тест:
check_string(test_bad)
>>>False
Регулярное выражение дополнительная информация regexr
Регулярное выражение выполняет операции сопоставления с шаблоном и действительно многое другое. В приведенном ниже примере я заранее скомпилировал шаблон, чтобы он выглядел чистым и при необходимости мог быть использован повторно.
Я также использую re.fullmatch()
который требует соответствия всей предоставленной строки, а не только одной ее части. Сам по себе он вернет None
или объект match, поэтому я проверяю, существует ли он (что означает, что он соответствует) и возвращает True или, если нет (None), возвращает False .
import re
def match(test):
re_pattern = re.compile('[A-Z][0-9][A-Z][0-9][A-Z][0-9]')
if re.fullmatch(re_pattern, test):
return True
else:
return False
Комментарии:
1. @Saynab Aden если этот ответ правильный, пожалуйста, отметьте его