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
相关产品推荐
相关产品推荐

