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

Python中print()输出多余换行问题的原因与解决方法

多余换行的原因
  • 用for line in f遍历读取文件行时,Python会保留每一行末尾原生的换行符:你的line.txt第一行末尾自带\n换行符,读入内存后第一行的line变量末尾本身就带换行。
  • Python内置print()函数默认会在传入的输出内容末尾自动追加一个换行符,两个换行叠在一起,就导致第一行输出后多换了一次行,两行之间出现多余空行。
  • 你观察到的第二行末尾无换行,是因为原文件第二行本身就没有末尾换行符,读入的line变量末尾不带换行,这里如果直接用默认参数的print()反而会给第二行强行补一个换行,和原文件格式不一致。
  • 额外提一句:你现在写的先split()逐词判断再替换的逻辑有冗余,还可能漏替换带标点的场景(比如Way,、Way.这类和标点连在一起的匹配项),直接对整行做字符串替换即可。
修正代码

下面的代码既可以消除中间多余空行,还能完全保留原文件的换行规则(第一行末尾带换行,最后一行末尾无换行),同时简化替换逻辑:

with open("line.txt") as f:
    for line in f:
        # 识别当前行原生是否带末尾换行
        line_has_newline = line.endswith('\n')
        # 去掉末尾换行后执行替换,避免换行符干扰文本处理
        processed_content = line.rstrip('\n').replace("Way", "Street")
        # 按原文件的换行规则控制输出
        if line_has_newline:
            print(processed_content)
        else:
            print(processed_content, end='')

运行后输出效果完全符合预期:

ADAMS, Ernie, 166 Winterstreamrose Street
NEWLINE, None, 1 Nomorenewlines Street

第一行末尾自带换行,两行之间无多余空行,第二行末尾和原文件一致无额外换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:36:21