You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python表达式求值时出现的前导零语法错误

问题原因

Python3 不允许十进制整数字面量携带前导零,因此直接运行eval("30+05")会触发SyntaxError: leading zeros in decimal integer literals are not permitted语法错误。同时你原代码中的Print首字母大写不符合Python语法要求,需要改为小写的print。

实现方案

方案1:正则表达式快速替换

适用于绝大多数简单四则运算场景,通过正则匹配数字串去除前导零:

import re

Solve = "30+05"
# 规则:匹配数字串的前导零,仅保留后面的有效数字
processed_Solve = re.sub(r'\b0+(\d+)\b', r'\1', Solve)
print(eval(processed_Solve))
# 输出结果:35

正则逻辑说明:

  • \b匹配单词边界,避免误删数字中间的0
  • 0+(\d+)捕获开头零之后的有效数字部分
  • 特殊场景如"000+008"会被处理为"0+8",不会出现空值错误

方案2:拆分表达式逐个处理

适用于带括号、多运算符的复杂表达式场景,精准处理每一个数字项:

import re

Solve = "30+05*(100-009)/03"
# 拆分所有数字和运算符为独立token
tokens = re.findall(r'\d+|[+\-*/()]', Solve)
processed_tokens = []
for token in tokens:
    if token.isdigit():
        # 数字项转int自动去前导零后再转回字符串
        processed_tokens.append(str(int(token)))
    else:
        processed_tokens.append(token)
processed_Solve = ''.join(processed_tokens)
print(eval(processed_Solve))
# 输出结果:181.66666666666666
注意事项
  • 若表达式包含八进制、十六进制等非十进制数字,需要调整正则匹配规则适配对应场景
  • 生产环境使用eval执行输入表达式存在代码注入风险,仅建议在可信输入场景下使用

内容的提问来源于stack exchange,提问作者Anshul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 13:18:02