我必须使用存储在python词典中的多个分隔符来分割字符串。
例如,这是我的带有分隔符的字典:
import operator
ops = {
"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv
}
这是字符串的一个例子:
mystring = "2 * 3 + 4 + 5 / (9 + 5)"
结果应为:
result = ['2', '3', '4', '5', '(9', '5)']
有可能只使用变量'mystring'和'ops'以及一些没有硬编码的函数将所有分隔符字符串作为函数参数吗?
答案 0 :(得分:3)
如果您想分开任何不使用数字的字符:
import re
a = "(20 * 20 / 19 - 29) ** 2"
out_list = re.findall(r"[\d']+", a)
如果您想进行实际计算,请说:
eval("(20 * 20 / 19 - 29) ** 2")
答案 1 :(得分:1)
您可以使用RegExp为您解决此案例。
r = re.compile('\(?\d+\)?') # possible parenthesis surrounding an integer
r.findall(mystring)
> ['2', '3', '4', '5', '(9', '5)']
答案 2 :(得分:0)
这可能会有所帮助:
import operator
ops = {"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv
}
myString = "2 * 3 + 4 + 5 / (9 + 5)"
def getSubStrings(myInputString, delimiters):
allSubStrings = [myInputString]
tempList = []
for eachKey in delimiters.keys():
for eachSubString in allSubStrings:
tempList += eachSubString.split(eachKey)
allSubStrings = tempList
tempList = []
allSubStrings = [eachSubString.strip() for eachSubString in allSubStrings]
return allSubStrings
print(getSubStrings(myString, ops))
并且给定字符串的答案是:
['2', '3', '4', '5', '(9', '5)']