re.findall волнуется, потому что ваша переменная element
имеет тип bs4.element.Tag
.
Вы можете узнать это, добавив print(type(element))
в свой скрипт.
Основываясь на некоторых быстрых поисках, я думаю, что вы можете извлечь нужную строку из тега, используя атрибут contents
(который является списком) и взяв первого члена этого списка (индекс 0
).
Более того, re.findall
также возвращает список, поэтому вместо .text
вам нужно использовать [0]
для доступа к первому члену. Таким образом, у вас снова будет строка, поддерживающая метод .strip()
!
И последнее, но не менее важное: похоже, вы неправильно набрали косую черту и намеревались использовать \
вместо /
.
Вот рабочая версия вашего кода:
pattern_1 = re.findall("\d+.\d+", element.contents[0])[0].strip()
Это определенно не красиво и не очень питонично, но оно выполнит свою работу.
Обратите внимание, что я отбросил вызов на re.compile
, потому что он запускается в фоновом режиме, когда вы звоните re.findall
в любом случае.