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

Python如何从字符串中拆分数字、特殊字符及后接数字的+/-号

字符串拆分实现方案

给定原始字符串

  • a = ';1'
  • b = '2+3'
  • c = '32'
  • d = '12-'
  • e = '2+;'
  • f = '2'

预期拆分输出

  • a: [';', '1']
  • b: ['2+', '3']
  • c: ['3', '2']
  • d: ['1', '2-']
  • e: ['2+', ';']
  • f: ['2', None]

拆分规则

+、-号始终跟在数字之后,最终输出为长度固定为2的列表,不足第二个元素补None。

Python实现代码

def split_str(input_s: str) -> list:
    tokens = []
    str_len = len(input_s)
    index = 0
    while index < str_len:
        # 数字后紧跟+/-时,合并为一个token
        if index < str_len - 1 and input_s[index].isdigit() and input_s[index+1] in '+-':
            tokens.append(input_s[index] + input_s[index+1])
            index += 2
        else:
            tokens.append(input_s[index])
            index += 1
    # 长度不足2时补None
    if len(tokens) == 1:
        tokens.append(None)
    return tokens

# 测试用例
if __name__ == "__main__":
    test_case_map = {
        "a": ";1",
        "b": "2+3",
        "c": "32",
        "d": "12-",
        "e": "2+;",
        "f": "2"
    }
    for key, val in test_case_map.items():
        print(f"{key}: {split_str(val)}")

运行输出

a: [';', '1']
b: ['2+', '3']
c: ['3', '2']
d: ['1', '2-']
e: ['2+', ';']
f: ['2', None]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:15:02