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

如何按列表指定字符数将字符串拆分为多行?代码问题排查

问题排查与修复

错误原因

你的代码核心问题出在嵌套循环逻辑错误和起始位置更新错误:

  • 外层循环遍历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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:01