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

Python实现文本文件行拼接并输出至新文件问题求助

解决Python文件对应行拼接换行问题

嘿,刚入门Python遇到这种小问题很正常,我来帮你捋一捋~

你现在的代码之所以会把内容拆成两行,核心问题是**readlines()读取的每一行都会保留末尾的换行符\n**。比如file1[0]其实是"Hello how are u?:\n",file2[0]是"Jhon\n",直接拼接后就变成了"Hello how are u?:\n:Jhon\n",自然会分成两行显示,而且你还多写了一个冒号(你的示例输出里是原file1的内容加空格加file2内容,不需要额外加冒号)。

另外你的代码里还有个小bug:循环写的是for i in ingles:,但ingles这个变量根本没定义,应该是遍历file1才对。

给你优化后的代码,既解决换行问题,又更符合Python的最佳实践:

# 使用with语句自动管理文件,无需手动close
with open("file1.txt", "r", encoding="utf-8") as input1, \
     open("file2.txt", "r", encoding="utf-8") as input2, \
     open("file3.txt", "w", encoding="utf-8") as output:
    # 用zip同时遍历两个文件的行,一一对应
    for line1, line2 in zip(input1, input2):
        # 去掉每行末尾的换行符,再用空格拼接,最后加上换行符写入
        combined_line = f"{line1.rstrip('\n')} {line2.rstrip('\n')}\n"
        output.write(combined_line)

关键细节解释:

  • with语句:打开文件后会自动帮你关闭,避免忘记close()导致的资源泄漏,代码也更简洁。
  • zip(input1, input2):直接遍历文件对象(不用先readlines()把所有内容读进内存),同时取出两个文件的对应行,比手动维护索引j更高效直观,还能避免索引越界的问题。
  • rstrip('\n'):只去掉每行末尾的换行符,保留行内的其他空格(如果有的话),比strip()更精准,不会误删行首或行中间的空白。
  • f-string拼接:比传统的+拼接更清晰易读,直接按格式组合内容,最后加上\n保证每行结尾有换行符。

如果你的两个文件行数不一样,zip()会以较短的那个为准。如果需要处理行数不一致的情况,可以用itertools.zip_longest,不过看你的示例两个文件行数是一致的,暂时用zip就够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:24