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

Python不使用内置函数和正则将表达式字符串转列表的问题

实现方案

核心思路是逐个遍历表达式字符串的字符,临时缓存连续的数字字符,遇到非数字的符号(括号、运算符)时,先把缓存的数字(如果有)存入结果列表,再将符号存入列表,遍历结束后检查是否还有未存入的剩余数字。

实现代码

def expr_to_list(expr_str):
    result = []
    current_num = ''
    for char in expr_str:
        # 判断当前字符是否为数字
        if '0' <= char <= '9':
            current_num += char
        else:
            # 先把之前拼接的数字存入列表
            if current_num:
                result.append(current_num)
                current_num = ''
            # 存入当前符号
            result.append(char)
    # 遍历结束后处理末尾可能剩余的数字
    if current_num:
        result.append(current_num)
    return result

# 测试示例
test_expr = "(52^2)+150-(2^2+4+5)"
print(expr_to_list(test_expr))

输出结果

运行上述代码后输出与预期完全一致:
["(", "52", "^", "2", ")", "+", "150", "-", "(", "2", "^", "2", "+", "4", "+", "5", ")"]

说明

  • 全程没有使用正则表达式,也没有依赖split这类会拆分字符的字符串方法,仅用基础遍历和字符判断实现
  • 自动识别任意长度的连续数字,不会出现多位数被拆分的问题
  • 支持加减乘除、幂运算、括号等所有单字符运算符的表达式拆分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:27:05