pattern = re.compile('[\\d{}]+$'.format(re.escape(string.punctuation)))
x = ['12,523', '3.46', 'this is not', 'foo bar 42', '23fa']
print([item for item in x if pattern.match(item)])
Фильтрация строк, содержащих только цифры и/или знаки препинания – python