Ваше регулярное выражение удаляет пробелы, а также все остальное. Я думаю, что чтобы найти что-то с помощью регулярных выражений, лучше всего искать это с помощью библиотеки re
.
Мы начнем с поиска всех строк, заканчивающихся на %
: '.*%'
. Для Bank ABC 123% CDE
это вернет Bank ABC 123% CDE
, который содержит пробел и не цифры.
Чтобы улучшить это, давайте посмотрим на числа с 1 запятой или точкой не более: \d*[,.]?\d*%
, это вернет 123%
для вашего ввода
Чтобы подвести итог, давайте заменим запятую на точку
import re
str = 'Bank1 2,3%'
arr = [x.replace(',','.') for x in re.findall('\d*[,.]?\d*%',str)]
print(arr)
>>> ['2.3%']
Обратите внимание, что ответом является массив всех совпадений
Если вы хотите получить номер, теперь вы можете просто сделать:
if len(arr)>0:
number_without_percent_sign = arr[0][:-1]
print(float(number_without_percent_sign))
>>> 2.3