原因不在“是否超宽”这一步,而在更早的空白处理。Python 3.14 的 textwrap.shorten 会先把输入中的空白折叠,把所有空白替换成单个空格,然后才判断结果是否满足 width。换行也属于空白,所以会在宽度判断之前被替换;即使折叠后的文本已经满足 width,shorten 仍返回折叠后的文本,而不会恢复原来的换行。只有不满足 width 时,它才从末尾按词丢弃,并使剩余文字与 placeholder 一起受 width 限制。因此,“没超宽也丢了换行”是 shorten 的既定处理顺序造成的,不是宽度计算偶发失误。这里讨论的是 Python 3.14 的 textwrap.shorten,不是中文语义摘要器;width 不是像素宽度,输出也不覆盖原稿。

AI台式电脑工作台示意图
AI台式电脑维护示意图,非真实门店、技师或客户实拍。

适用:可用于石家庄新华区台式电脑上已获授权的摘要展示程序及去敏文本,用来解释单行摘要中空白折叠和按宽截断的行为。它不用于判断中文字体渲染后的像素宽度,不用于生成语义摘要,也不承担保留原稿版式的职责。

观察:第一,准备一段去敏文本,保留换行、制表符和连续空格,把 width 设得足够大后调用 shorten;结果条件为输出仍把换行和连续空格折叠成单个空格,说明宽度满足并不会跳过折叠。第二,分别改变 tabsize、expand_tabs、drop_whitespace、replace_whitespace 再比较;结果条件为这些参数不改变先折叠空白的步骤,不能据此找回换行。第三,把 width 调小并设置 placeholder;结果条件为剩余文字和 placeholder 合计受 width 限制,必要时从末尾丢词。第四,对照输入与输出,原稿与展示结果分别保存;函数返回字符串不等于调用方没有另行写回,还须核对后续保存路径。

风险:如果把“未超宽”误认为“会保留原换行”,展示端可能把多段文字排成一行,段落边界和缩进信息丢失;如果把 width 当成像素宽度,可能对中文字体显示作出错误判断;如果把 shorten 当语义摘要,可能只得到截短文本而非概括;placeholder 也占宽度,可能使保留内容更少。调整上述与空白相关的参数并不能改变初始折叠步骤,所以不应把调参当作保留换行的办法。

下一步:整理去敏后的输入片段、是否含换行和连续空格的说明、调用时使用的 width 与 placeholder、其余相关参数以及实际输出片段,先按原稿和展示文本分开保存,再通过 400-877-9605 咨询。电脑快修网是信息展示与第三方维修对接平台,该号码只作咨询,实际范围和安排需确认;不要提交未去敏的原文,也不要把 shorten 输出当作原稿留存。