Я рассмотрю 4 случая: A) только положительные десятичные дроби, выраженные с использованием .
, B) ЛЮБЫЕ десятичные дроби, выраженные с использованием .
, C) НЕСКОЛЬКО десятичных дробей, выраженные с использованием .
, D) НЕСКОЛЬКО Десятичных дробей, выраженных с использованием .
ИЛИ ,
.
А) Предполагая, что ваше число всегда выражается в десятичной записи
import re
results = re.findall("\d+\.\d+",str1)[0]
print(results)
#'7.5'
B) Если вытакже используйте ОТРИЦАТЕЛЬНЫЙ десятичные дроби, используйте это (более надежно):
results = re.findall(r"[-+]?\d*\.\d+|\d+",str1)
C) Если у вас НЕСКОЛЬКО десятичных дробей, используйте это:
str1="The percentage of success for Team A is around 7.5 per cent and 2.3"
results = re.findall(r"[-+]?\d*\.\d+|\d+",str1)
len(results)
#2 since it found the 2 decimals.
# Use list comprehension to store the detected decimals.
final_results = [i for i in results]
print(final_results)
#['7.5', '2.3']
D) Наконец, если десятичные дроби выражены с использованием .
(точка) или ,
(запятая), тогда используйте супер-робаст:
str1="The percentage of success for Team A is around 7.5 per cent and 2,3"
results = re.findall(r"\d+[.,]*\d*[.,]*\d*",str1)
final_results = [i for i in results]
#['7.5', '2,3']