Как удалить все символы из строки кроме цифр и точек?

Мне нужно удалить из строки все символы кроме цифр и точки Если можете, то продемонстрируйте пожалуйста это в качестве кода Значения для примеров оставлю ниже

Для примера:

¥ 362.25

52,50€


Ответы (2 шт):

Автор решения: greymaster

Я проанализировал данную задачу и немного интерпретировал, мой код позволяет найти все числа в строке, в том числе отрицательные и вещественные, таким образом он отвечает и на ваш запрос

a = input()
# a = "¥ 362.25 52,50€  435 uhdja-43-7.3 47432--38 fhhwref "



def isnum(num):
    key = "1234567890"
    num = str(num)
    if num in key and num != "":
        return True
    return False


def find_num(text, float_sep=None, unary_sing=None):
    text += " "  # Увеличивает длину исходной строки на 1
    if unary_sing is None:  # Установка стандартных значений
        unary_sing = ["-"]
    if float_sep is None:
        float_sep = [",", "."]

    nums = []  # Объявление списка для чисел
    number = ""

    last_sym = ""
    flag_float = False
    flag_unary = False
    for sym in text:
        if isnum(sym):  # Проверка символа на число
            number += last_sym
            last_sym = sym
        elif sym in float_sep and \
                not flag_float and \
                isnum(last_sym):
            # Проверка на вхождение в список, проверка на единоличность, проверка на число прошлого символа
            number += last_sym
            last_sym = sym
            flag_float = True
        elif sym in unary_sing and \
                not flag_unary and\
                number == "":
            # Проверка на вхождение в список, проверка на единоличность, проверка на первое число
            last_sym = sym
            flag_unary = True
        elif number:
            # Если не одно условие выше не выполнилось, то проверяет было ли найдено хоть что-то
            if isnum(last_sym):  # Проверяет последний символ на число, помогает избежать потери последнего символа
                number += last_sym
            nums.append(number)
            number = ""  # Обнуление всех параметров
            flag_float = False
            flag_unary = False
            last_sym = ""
            if sym in unary_sing:  # Частный случай если символ начинает новое число
                last_sym = sym
    return nums


g = find_num(a)
print(g)
# При a = "¥ 362.25 52,50€  435 uhdja-43-7.3 47432--38 fhhwref "
# Выведет: ['362.25', '52,50', '435', '-43', '-7.3', '47432', '-38']


→ Ссылка
Автор решения: Yury

Если уж оставлять и запятую (где Евро), то я бы предложил так:

import re

def func(x):
    return (re.findall(r'-[0-9.,]+|[0-9.,]+', x))
   
a = "¥ 362.25 52,50€  435 uhdja-43-7.3 47432--38 fhhwref "
print (func(a))

#a = ['362.25', '52,50', '435', '-43', '-7.3', '47432', '-38']
→ Ссылка