我想将递归条件语法转换为python条件格式

问题描述 投票:0回答:1

我需要一个Python脚本(正则表达式)来转换以下字符串:

pattern1?(pattern2?pattern3:pattern4):(pattern5?pattern6:pattern7)

pattern1?pattern2:(pattern5?pattern6:pattern7)

(pattern3 if pattern2 else pattern4) if pattern1 else (pattern6 if pattern5 else pattern7)

这是一个示例,因为它可以递归:

input = (x< 0.02e-6)?((y<0.07)?9:7):4
out = (9 if (y<0.07) else 7) if (x< 0.02e-6) else 4
python regex recursion
1个回答
0
投票

您需要

regex
库来执行此操作,因为它支持子例程和递归,因此您可以匹配平衡/嵌套模式。

pip install regex

使用

regex
,您可以将
(pattern1)?pattern2:pattern3
等平衡/嵌套模式与以下表达式匹配:

((?:[^?:()\n]|\((?1)\))+)\?((?1)):((?1))

这是Python代码:

import regex

text = '(x< 0.02e-6)?((y<0.07)?9:7):4'
pattern = r'((?:[^?:()\n]|\((?1)\))+)\?((?1)):((?1))'

while regex.search(pattern, text):
    text = regex.sub(pattern, r'\2 if \1 else \3', text)

print(text)

查看现场测试这里

© www.soinside.com 2019 - 2024. All rights reserved.