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

