如何按列表指定字符数将字符串拆分为多行?代码问题排查
问题排查与修复
错误原因
你的代码核心问题出在嵌套循环逻辑错误和起始位置更新错误:
- 外层循环遍历
num_char的每个字符数,内层又用range(x, len(s), n)做了一轮循环切分,这会导致num_char里的每个元素都触发一次完整的文本切分流程,自然会重复输出内容。 - 起始位置
x被错误地设为n,而不是累加当前截取的长度,导致每次切分的起始位置无法正确推进。
修正后的代码
我们只需要按num_char的顺序依次截取对应长度的文本段,逐步推进起始位置即可:
def chunks(s, mylist): start = 0 for n in mylist: # 截取从start开始的n个字符 yield s[start:start + n] # 更新起始位置,推进n位 start += n # 防止超出文本长度,提前终止 if start >= len(s): break num_char = [14,12,7] text = "Hello everyone how are you? R u ok?" # 按预期格式输出 formatted_text = '"\n '.join(chunks(text, num_char)) print(f'text = "{formatted_text}"')
输出结果
运行后会得到你想要的格式:
text = "Hello everyone how are you? R u ok?"
内容的提问来源于stack exchange,提问作者Math
相关产品推荐
相关产品推荐

