1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import re
def extract_params(formula):
def parse_inside_parentheses(s):
# Enlever les parenthèses externes
s = s[1:-1]
# Initialisation
params = []
current_param = []
depth = 0
for char in s:
if char == '(':
depth += 1
elif char == ')':
depth -= 1
if char == ',' and depth == 0:
params.append(''.join(current_param).strip())
current_param = []
else:
current_param.append(char)
if current_param:
params.append(''.join(current_param).strip())
return params
# Trouver le contenu de FOO
match = re.match(r'.*?\((.*)\)', formula)
if not match:
return []
content = match.group(1)
params = parse_inside_parentheses(f'({content})')
return params
# Exemple d'utilisation
formula = '=FOO(((A),(B),"C"),"D,E,F",((G),H))'
params = extract_params(formula)
print(params)
formula = '=FOO(((A1:B2, B5, B7, C8),(D5:E12),"9850"),"Banque, Caisse, Référence",((G),H))'
params = extract_params(formula)
print(params)
formula = '=FOO1(((A),(B),"C"),"D,E,F",(FOO2((a),(b),"c"),H))'
params = extract_params(formula)
print(params) |