如何重新格式化字符串操作字符串并获得其结果

时间:2019-07-18 09:27:06

标签: python string format

我写了一个旨在扩展字符串的代码。例如: solve("3(ab)") = "ababab" -- "ab" repeats 3 times

我设法将输入字符串重写为更具可读性的方式。但是,我还没有找到重新格式化此字符串的方法,以便python可以执行该操作。我不熟悉.format方法。

def solve(st):    
    rewritten = ''

    for i in range(len(st)-1):    
        if st[i].isdigit():
            if st[i+1] == '(':
                rewritten += st[i] + '*' 
            else:
                rewritten += st[i]

        elif st[i].isalpha():
            if st[i+1] == '(' or st[i+1].isdigit():
                    rewritten += st[i] + '+'   
            else:
                rewritten += st[i]
        else:
            rewritten += st[i]

    rewritten += st[-1]      
    return rewritten

solve("k(a3(b(a2(c))))") #returns 'k+(a+3*(b+(a+2*(c))))', ideally 'kabaccbaccbacc'```

1 个答案:

答案 0 :(得分:1)

您可以使用eval function来评估最终的rewritten字符串。您只需要用其他引号重写字符:

>>> eval('"k"+("a"+3*("b"+("a"+2*("c"))))')
'kabaccbaccbacc'