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

Python中如何根据另一字符串的空格拆分字符串为数组?

问题:根据空格位置拆分字符串

我有两个输入字符串:第一个是带空格的单词串,第二个是与第一个字符数相同的无空格字符串。需求是根据第一个字符串中的空格位置,将第二个字符串拆分为数组。尝试用循环实现时出现索引越界(IndexError)问题,找不到解决方案。

我的代码

a = str(input())
b = str(input())
b_word = str()
b_array = list()

for i in range(len(a)):
    if a[i] != " ":
        b_word += b[i]
    else:
        b_array += b_word
        b_word = str()
print(b_array)

输入示例

head eat
aaabbbb

错误输出

Traceback (most recent call last):
  File "main.py", line 29, in <module>
    b_word += b[i]
IndexError: string index out of range

期望输出

["aaab", "bbb"]

问题分析

  1. 索引越界根源:你输入的第一个字符串head eat长度为8(含空格),但第二个字符串aaabbbb仅7个字符,两者长度不匹配,循环到第8个位置(索引7)时,b[i]超出字符串范围,触发IndexError。
  2. 列表添加逻辑错误:b_array += b_word会把字符串拆成单个字符逐个插入列表,而非添加完整单词,正确做法是用append()方法。
  3. 遗漏最后一个单词:循环结束后,最后一个单词不会被加入数组,因为没有空格触发else分支。

修复后的代码

a = input().strip()
b = input().strip()

# 先校验长度一致性,避免索引越界
if len(a) != len(b):
    print("两个字符串长度必须一致")
else:
    b_word = ""
    b_array = []
    for i in range(len(a)):
        if a[i] != " ":
            b_word += b[i]
        else:
            if b_word:  # 跳过连续空格产生的空字符串
                b_array.append(b_word)
                b_word = ""
    # 循环结束后添加最后一段未处理的单词
    if b_word:
        b_array.append(b_word)
    print(b_array)

正确输入测试

若要得到期望输出["aaab", "bbb"],需保证两个字符串长度一致,比如调整输入为:

head ea
aaabbbb

此时第一个字符串长度为7,第二个字符串长度也为7,运行代码即可得到符合预期的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:20:29