Подобные вещи являются областью "регулярных выражений". Regex сделан для сопоставления с образцом. Само по себе это широкий ttopi c, слишком много, чтобы объяснить здесь (проверьте regexbuddy или другой сайт ).
python имеет встроенный компилятор regex под re
(а также модуль regex
). Следовательно, простое решение может быть таким:
word for word in somelist if re.search(r"[a-zA-Z]\d{3}[a-zA-Z]", word)
, которое выполняет итерацию по некоторому списку и выбирает все, что соответствует (полностью) символу в одном из двух «диапазонов», за которым следуют 3 цифры, за которыми следует символ в диапазон.
A, отмеченный в комментариях: re.search
будет сопоставлять (находить) любой элемент, у которого есть "часть" этого элемента, соответствующая "шаблону". Таким образом, он будет соответствовать a123b
, а также abc b123cd
. Если вы хотите sh, чтобы убедиться, что полное "слово" в массиве соответствует подстроке, используйте re.fullmatch
.
Fullmatch будет соответствовать a123b
, но не abc b123cd
, а не ab123cd