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

自定义split函数异常:循环分割字符串遗漏最后单词及空格处理问题

自定义空格分割函数的问题修复

原代码存在三个核心问题:

  • 循环结束后未处理最后一个非空单词,导致遗漏;
  • 遇到空格就直接将当前(可能为空的)word加入结果,出现空字符串元素;
  • 最后判断结果列表长度的逻辑不合理,无法正确返回末尾有单词的情况。

修正后的代码

def mysplit(strng):
    res = []
    word = ""
    for char in strng:
        if char != " ":
            word += char
        else:
            # 只有当word非空时才添加到结果,避免空字符串
            if word:
                res.append(word)
                word = ""
    # 循环结束后,把最后一个未处理的非空单词加入结果
    if word:
        res.append(word)
    return res

# 测试用例
print(mysplit("To be or not to be, that is the question"))
print(mysplit("To be or not to be,that is the question"))
print(mysplit("   "))
print(mysplit(" abc "))
print(mysplit(""))

修正点说明

  1. 遍历方式优化:直接遍历字符串的字符,比用range(len(strng))更简洁直观;
  2. 空格处理逻辑改进:遇到空格时,仅当word不为空才将其加入结果列表,避免连续空格或开头空格产生空字符串元素;
  3. 补充末尾单词处理:循环结束后检查word是否非空,确保最后一个单词不会被遗漏;
  4. 简化返回逻辑:直接返回结果列表即可,因为如果输入是纯空格或空字符串,res会自然是空列表,无需额外判断。

运行修正后的代码,输出将完全符合预期:

['To', 'be', 'or', 'not', 'to', 'be,', 'that', 'is', 'the', 'question']
['To', 'be', 'or', 'not', 'to', 'be,that', 'is', 'the', 'question']
[]
['abc']
[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:07:13