2017-04-20 55 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)']