我正在做的事情的上下文:我正在通过Python脚本在两种语言之间翻译if/then/else语句(目前是2x,但最终可能升级到3x)。我有一个函数,它从原始语言中获取if/then/else语句,并将其分解为一个列表[if\u子句,then\u子句,else\u子句]。问题是,在then和/或else子句中可能有(而且常常是)嵌套if语句。例如,我会传递一个字符串,比如。。。你知道吗
if (sim_time<=1242) then (new_tmaxF0740) else if (sim_time<=2338) then (new_tmaxF4170) else (new_tmaxF7100)
…到我的函数,它会返回列表。。。你知道吗
['(sim_time<=1242)','(new_tmaxF0740)','if (sim_time<=2338) then (new_tmaxF4170) else (new_tmaxF7100)']
因此,如您所见,在本例中,else子句需要进一步分解,方法是通过我用于生成list的相同函数再次运行它,这次只将最后一个list元素传递给该函数。为此,我将测试原始字符串,看看是否包含超过1个if语句(我已经有了用于此的regex),我的想法是使用循环在原始列表中创建嵌套列表,然后可能看起来像。。。你知道吗
[如果子句,那么子句,[如果子句,那么子句,否则子句]]
这些可以嵌套任意次数/到任意维度。到目前为止,我的计划是编写一个循环来查找下一个嵌套的if语句(使用regex),并通过应用if\u extract()函数来分解语句,将找到if语句的列表索引重新分配到结果列表中。你知道吗
我觉得列表理解可能做不到这一点,因为要找到索引,列表理解语句似乎必须动态地改变。也许更适合地图,但我不知道如何申请?我最终希望遍历循环以返回下一个if语句的索引(不管嵌套有多深),这样我就可以继续用函数将它们分开。你知道吗
如果我理解正确,可以递归调用函数。你知道吗
我没有测试它,因为我不知道你到底在使用什么函数,但我认为这样的东西应该可以工作
相关问题 更多 >
编程相关推荐