Как вытянуть из строки нужные значение?
С помощью 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('Не расспознано')