Как вытянуть из строки нужные значение?

С помощью pytesseract получаю строку типа '9 + 3', значение каждый раз отличаются. Мне нужно достать числа и произвести математическое действие, которое тоже есть в строке. Заранее благодарю за помощь


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

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

если в строке нет ничего лишнего eval('9+3')

12 Функция опасна тем что выполняет строку кода. Python выполнит любой код, который распознает pytesseract. Если уверены, что в строке будут только примеры - можно пользоваться. можно и так. набросал по быстрому и я новичок - любитель.

string = 'a9,fl+fg3kk_$'
operations = ['+', '-', '/' ,'*']
operation = ''
counter = 0
one_number = list()
two_number = list()

l = [i for i in string]             # Список из строки

for elem in l:                                  # Цикл проверяет на число, считает кол-во математических операторов,   
    if elem in operations:                      # создает два списка с цифрами первого и второго числа
        operation = elem
        counter += 1
    elif elem.isdigit() and operation == '':
        one_number.append(elem)
    elif elem.isdigit() and operation != '':
        two_number.append(elem)

if counter == 1 and one_number != [] and two_number != []:     # Проверка, что бы был один мат оператор, и по обе стороны от него были цифры
    if operation == '+':
        result = int(''.join(one_number)) + int(''.join(two_number))
    if operation == '-':
        result = int(''.join(one_number)) - int(''.join(two_number))
    if operation == '/':
        result = int(''.join(one_number)) / int(''.join(two_number))
    if operation == '*':
        result = int(''.join(one_number)) * int(''.join(two_number))
    print(result)
else:
    print('Не расспознано')
→ Ссылка