Python嵌套循环拼接字符串写入文件时出现意外换行如何解决
问题原因
- 调用
readlines()读取文件行时,返回的每个字符串末尾都会携带原文件行尾的换行符\n,直接拼接就会导致输出内容意外换行 - 你当前的三层循环顺序是「第一个列表元素→第二个列表元素→数字」,符合「第一个列表单个单词遍历完所有数字后再处理下一个单词」的需求,仅需调整字符串处理逻辑即可
修正方案
在读取文件行时移除末尾的换行符即可,推荐同时优化文件打开方式,避免资源泄漏,修正后代码如下:
# 读取文件时直接移除行尾换行符 with open("5.txt", "r") as f: file1_list = [line.rstrip('\n') for line in f] with open("6.txt", "r") as f: file2_list = [line.rstrip('\n') for line in f] with open("newList.txt", "w") as f: for item in file1_list: for item2 in file2_list: for num in range(0, 10000): f.write(f"{item}{num:04d}{item2}\n")
补充说明
- 使用
rstrip('\n')只会移除字符串末尾的换行符,不会影响单词本身前后的有效空格 - 优化后的f-string拼接语法可读性更高,和你原有格式化逻辑效果完全一致
- 所有文件都通过
with上下文管理器打开,会自动关闭释放资源,无需手动调用close方法
内容的提问来源于stack exchange,提问作者gnabell
相关产品推荐
相关产品推荐

