有没有办法将字符串中的?:运算符转换为python条件语句?

时间:2018-05-28 13:20:08

标签: python

我使用python来解析包含三元运算符 a?的文本文件? B:C

我想将?:运算符转换为python条件语句 b如果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 )"

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

嗯,这可能有点受限,但您可以使用以下内容:

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

bool(...)部分会返回 False True ,它会自动转换为0和1作为列表索引。