Проблема: использование любого слова в строке для поиска элемента в списке и идентификации элемента или возврата индекса.Использование любого слова в строке для поиска элемента в списке и идентифицирующего элемента
Здравствуйте, я искал этот сайт и другие сайты, чтобы найти решение моей проблемы. Решения, которые я нашел успешны в определении, если в списке есть элемент в строке,
Пример:
any(word in str1 for word in List)
Но это только возвращает истину или ложь, и с командой,
print word
возвращает ошибку
Мне нужно решение, которое может обнаружить местонахождение элемента списка и либо распечатать деталь, или дать индекс внутри списка.
Проект, с помощью которого я использую это как ИИ, который имеет возможность преформировать математическое уравнение. Для этого он должен иметь возможность находить операторов, которые являются не только стандартными «+, -, *, /», но и форматами слов. Например, «плюс, минус и т. Д.» Когда он находится, программа может просто заменить элементы в строке правильными стандартными операторами, которые может обрабатывать eval().
Пример кода из проекта повторно:
from __future__ import division
import re
from math import *
Listopp = ["+","-", "*","/"]
Listadd = ["add","plus"]
Listsub = ["subtract","minus"]
Listmult = ["times","multiply","x"]
Listdivide = [ "divide","over"]
Listmath =Listopp + Listadd + Listsub + Listmult + Listdivide
try:
str1 = raw_input("what is your math problem?")
if (any(word in str1 for word in Listmath) and re.findall(r"[-+]?\d*\.\d+|\d+",str1) != []):
# here is where the solution need to be placed
opp = Listmath.index(any(word in str1))
# needs to be identified or indexed
#Replaced with standard operators
if (opp in Listdivide):
str1 = str1.replace(opp ,"/")
if (opp in Listmult):
str1 = str1.replace(opp ,"*")
if (opp in Listsub):
str1 = str1.replace(opp ,"-")
if (opp in Listadd):
str1 = str1.replace(opp ,"+")
if (opp in Listopp):
pass
math = eval(str1)
if not float(math).is_integer():
print "rounded"
result = round(math, 3)
else:
print "real"
result = math
print result
else:
print "No suitable math problems found."
except Exception as e:
print e
Любая помощь или консультации по этому коду было бы весьма признателен.
Я уверен, что вы «делаете это неправильно». То, что вы описываете, является парсером выражений, и это значительно сложнее, чем поиск и замена. Например. использование pyparsing: https://pyparsing.wikispaces.com/file/view/fourFn.py – thebjorn