拆分存储在字典

时间:2017-04-20 12:29:14

标签: python string dictionary split delimiter

我必须使用存储在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'以及一些没有硬编码的函数将所有分隔符字符串作为函数参数吗?

3 个答案:

答案 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)']