有没有一种方法可以改变这个世界?:字符串中的运算符到python条件语句?

2024-04-23 22:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python解析一个文本文件,其中包含三元运算符a?b:c

我想转换一下这个?:运算符到python条件语句b if a else c。你知道吗

示例:

expression = "(2.4**l2) + 8.0*( (l3>=l4) ? k2:k3 )"
converted_expression = "(2.4**l2) + 8.0*(k2 if (l3>=l4) else k3 )"

Tags: 示例if运算符k2语句条件elseexpression
2条回答

用正则表达式怎么样?这个特殊的regex不关心空格,为了清晰起见,它使用了命名的捕获组

import re

regex = re.compile(r'\((?P<cond>.*)\) ?\? ?(?P<if_true>.+):(?P<if_false>.+)')

string = '(l3>=l4) ? k2:k3'
match = regex.search(string)
print('{if_true} if {cond} else {if_false}'.format(if_true=match.group('if_true'),
                                                   cond=match.group('cond'),
                                                   if_false=match.group('if_false')))

# k2 if l3>=l4 else k3

嗯,这可能有点有限,但你可以用以下方法:

converted_expression = "(2.4**l2) + 8.0*([k3,k2][bool(l3>=l4)])"

bool(…)部分将返回FalseTrue,作为列表索引分别自动转换为0和1。你知道吗

相关问题 更多 >