我使用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 )"
答案 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作为列表索引。