Python不使用split()函数拆分字符串时返回单个字符问题求解
问题成因
- 你的逻辑仅对单个字符做判断,只要字符不是空格就直接追加到结果列表,字符串执行
+=操作时会把单个字符作为独立元素加入列表,自然会得到每个元素为单个字符的结果。 - 缺少完整单词的拼接逻辑:没有临时变量累计拼接当前单词,也没有触发单词存入结果列表的判断(遇到空格时将拼接好的单词存入列表)。
- 代码中的全局变量
i、循环内的i+=1均为无效代码,for循环的遍历变量i每次都会被range()生成的序列值覆盖,手动修改不会影响遍历进度。
修正方案
核心逻辑是新增临时变量存储当前正在拼接的单词,遇到空格时将已拼接完成的单词存入结果列表,遍历结束后补充存入末尾的单词即可,修正后代码如下:
def n_split(i_str): new_list = [] current_word = "" for char in i_str: if char != ' ': # 不是空格就拼接到当前单词 current_word += char else: # 遇到空格且当前单词不为空时,存入结果,避免连续空格生成空元素 if current_word: new_list.append(current_word) current_word = "" # 遍历结束后,补充存入最后一个没有空格触发存入的单词 if current_word: new_list.append(current_word) return new_list inp_str = input("Enter the string:") print("List:") print(n_split(inp_str))
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

