Python を使用して、スプレッドシート xml からフォーミュラ リファレンス マップを作成する作業を行っています。式は
=IF(AND(LEN(R[-2]C[-1])>0,R[-1]C),WriteCurve(OFFSET(R16C6, 0,0,R9C7,R10C7),R15C6,R10C3, R8C3),"NONE")
writecurve 関数の n 番目の引数を取得することにのみ関心があります。ここでは、基本的に括弧内にないコマをカウントする非常にCスタイルのプログラムを作成します。ネストされた式がたくさんあります
def parseArguments(t, func, n):
start=t.find(func)+len(func)+1
bracket = 0
ss = t[start:]
lastcomma = 0
for i, a in enumerate(ss):
if a=="(":
bracket +=1
elif a==")":
if bracket==0:
break
bracket-=1
elif a == ",":
if bracket==0 and n==0:
break
elif bracket ==0:
if n-1==0:
lastcomma = i
n-=1
if lastcomma == 0:
return ss[:i]
else:
return ss[lastcomma+1:i]
これを行うpythonicの方法はありますか?または、式全体を解析するためのより良い再帰的な方法はありますか? どうもありがとう