Python中使用compile函数处理空字符串表达式的问题咨询
Python中使用compile函数处理空字符串表达式的问题咨询
看起来你遇到的问题是当表达式字符串为空时,compile()函数因为无法解析空内容而抛出语法错误,对吧?这很合理,毕竟空字符串本身不是合法的Python表达式。不过我们可以在编译之前先做个简单的判断处理,完美解决这个问题!
你只需要在循环里对表达式字符串做个检查,如果是空的(或者只有空白字符),就替换成合法的表达式(比如要返回0就用'0',要返回null对应Python的None就用'None'),再传给compile()。修改后的代码如下:
Y = [['X', '']] YSUM = {} for a in Y: # 处理空或纯空白的表达式,替换为'0';若需返回None则改为'None' expr = a[1] if a[1].strip() else '0' YSUM[a[0]] = compile(expr, '<string>', 'eval')
这样调整后,当表达式为空时,我们实际编译的是'0'这个合法的Python表达式,后续执行求值时就会得到0,完全符合你的需求。如果你的场景更适合返回None(也就是你说的null),只需要把代码里的'0'替换成'None'就可以了。
另外用strip()来判断是为了覆盖表达式字符串只有空白字符的情况,避免因为输入了空格、制表符这类空白内容而再次触发语法错误,让代码更健壮。
备注:内容来源于stack exchange,提问作者point618
相关产品推荐
相关产品推荐

