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

如何将无空格的等式字符串拆分为指定格式的列表?

解决方案

可以通过跟踪当前字符所属的组类型来实现拆分,核心是区分三类元素:

  • 变量:以字母开头,后续可跟字母/数字
  • 数字:纯数字序列
  • 运算符/符号:非字母数字的单个字符

实现代码

def split_expression(s):
    result = []
    current = []
    # 标记当前组的类型:'var'(变量)、'num'(数字)、None(初始/待确定)
    current_type = None
    
    for char in s:
        if char.isalnum():
            if char.isalpha():
                # 当前字符是字母,判断当前组状态
                if current_type is None:
                    current_type = 'var'
                    current.append(char)
                elif current_type == 'var':
                    current.append(char)
                elif current_type == 'num':
                    # 数字组结束,先存数字,再开新变量组
                    result.append(''.join(current))
                    current = [char]
                    current_type = 'var'
            else:  # 字符是数字
                if current_type is None:
                    current_type = 'num'
                    current.append(char)
                elif current_type == 'num':
                    current.append(char)
                elif current_type == 'var':
                    # 变量组允许带数字后缀,直接追加
                    current.append(char)
        else:
            # 遇到非字母数字,先存当前组(如果有的话)
            if current:
                result.append(''.join(current))
                current = []
                current_type = None
            # 存当前符号
            result.append(char)
    # 处理最后一组未存入的元素
    if current:
        result.append(''.join(current))
    return result

# 测试示例
print(split_expression('b123+xyz=1+z1$'))
# 输出: ['b123', '+', 'xyz', '=', '1', '+', 'z1', '$']

逻辑说明

  • 用current暂存正在拼接的元素,current_type标记当前元素的类型
  • 遍历每个字符时:
    • 字母数字类:如果是字母,若当前在数字组则先收尾数字组,再开变量组;如果是数字,变量组可直接追加,数字组则继续拼接
    • 非字母数字类:先把当前拼接好的元素存入结果,再单独存入这个符号
  • 遍历结束后,别忘了把最后一组未处理的元素加入结果

这种方式能精准区分变量、纯数字和独立符号,完全匹配你需要的拆分效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:55:16