Сама строка: <span>0.38 p</span>
Моё регулярное выражение: <span>(\S+) p
Сам код на питоне: x = re.search(r"<span>(\S+) p", r.text)
Вопрос, почему на выходе получается такое " <span>0.38 p" когда должно записывать только цифры?
Не должно, вы ищите <span> в том числе - он и показывает <span>. Это так сказать группа 0. Каждая группа скобок - это отдельная группа в результатах поисках. Вам нужна группа 1: x.group(1)