【发布时间】:2016-06-18 22:19:55
【问题描述】:
我正在创建一个程序,它将拆分“单独对”的括号。例如()() 变成|()|()| 但(()) 保持不变,成为|(())|。它不断“获得”相同的字符。我尝试过更改插入位置,例如pos - 1,但仍然无法正常工作。这是我的代码:
def insert(source_str, insert_str, pos):
return source_str[:pos]+insert_str+source_str[pos:]
x = 0
rightSideOfEquation = "()bx((x))c(y(c+1)(x)y)"
for pos in range(len(rightSideOfEquation)):
if x == 0:
rightSideOfEquation = insert(rightSideOfEquation,'|',pos)
if rightSideOfEquation[pos] == '(':
x += 1
if rightSideOfEquation[pos] == ')':
x -= 1
print(rightSideOfEquation)
打印|||||||||||||||||||||||()bx((x))c(y(c+1)(x)y)
我希望它打印|()|bx|((x))|c|(y(c+1)(x)y)|
注意:您可以在此处查看:
**https://math.stackexchange.com/questions/1682322/recursive-parsing-parenthesis-with-explanation
**我尝试将其更改为pos + 1 和pos -1,但效果不大,除了重复的地方。
【问题讨论】:
-
如果是递归解析,你的递归在哪里?
-
x 永远是 0
-
好吧,我不知道怎么解释,我只是说你可以在这里阅读更多内容:)
-
在改变对象(或者,在这种情况下,重新分配其引用)时迭代可迭代的索引通常不是一个好主意。
-
如果您能想到任何更好的方法,不胜感激!
标签: python parsing python-3.x for-loop parentheses