2017-04-20 47 views
0

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

+0

作为一个起点,您可以使用'ops.keys()'来收集密钥。 – spectras

回答

3

如果你只想分裂的,这不是一个数量使用的任何字符:

import re 
a = "(20 * 20/19 - 29) ** 2" 
out_list = re.findall(r"[\d']+", a) 

如果你想要做实际的计算,然后说:

eval("(20 * 20/19 - 29) ** 2") 
1

您可以使用RegExp为您解决这种情况。

r = re.compile('\(?\d+\)?') # possible parenthesis surrounding an integer 
r.findall(mystring) 

> ['2', '3', '4', '5', '(9', '5)'] 
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)) 

和a对于给定的字符串,nswer是:

['2', '3', '4', '5', '(9', '5)']