Ваш пример, как показано, работает, печатая серию re.Match
экземпляров. (Хотя .
не делает то, что вы думаете, он делает, и может быть разумнее использовать \d{4}
внутри группы захвата. Простой .
- это шаблон для любого символа; вам, вероятно, нужен буквальный период , \.
.)
Несмотря на это, если ваши ссылки всегда имеют такой чистый формат, вы также можете использовать метод str
здесь:
>>> [int(i.rsplit("/", 2)[-2]) for i in state_links]
[2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]
Это разбивает каждую ссылку на 3 части, где каждый промежуточный элемент будет выглядеть так:
>>> state_links[0].rsplit("/", 2)
['https://2009-2017.state.gov/r/pa/prs/ps', '2009', 'index.htm']
Затем индексатор [-2]
берет компонент года.