Одним из способов может быть использование re.findall
для извлечения смежных цифр из строк и сохранения тех, которые имеют длину n
:
l = ['23 2312 dfr tr 133',
'2344 fdeed',
'der3212fr342 96']
import re
def length_n_digits(l,n):
return [s for i in l for s in
re.findall(rf'(?<!\d)\d{{{n}}}(?!\d)', i) or ['']]
Обратите внимание, что двойные скобки '{{}}'
просто для того, чтобы избежать внутренних скобок, и интерполяция не происходит. (?<!\d)
и (?!\d)
предназначены для обхода и обеспечения соответствия, только когда последовательность цифр n
не окружена другими цифрами.
length_n_digits(l, 2)
# ['23', '', '96']
length_n_digits(l, 3)
# ['133', '', '342']
length_n_digits(l, 4)
# ['2312', '2344', '3212']