Flask项目用open()写TXT文件时每行后多余空行的解决方法
Flask 导出TXT文件多余空行修复方案
核心原因
- 数据库存储的
text字段本身携带冗余连续换行,多来自用户输入时误敲回车、表单提交时的换行重复转义 - Python文本写入模式默认会自动把
\n转成当前系统的换行格式,若原文本已自带对应格式的换行,会叠加生成额外空行 - 写入逻辑未对原始文本做清洗,直接原样输出保留了所有冗余空白
修复步骤
- 引入正则处理模块,用于批量清洗连续冗余换行
- 打开文件时添加
newline=''参数,关闭Python自动换行转义逻辑 - 对每条待写入的文本做标准化清洗:
- 把全格式换行(Windows端
\r\n、老Mac端\r)统一转换为标准\n - 将连续出现的多个换行折叠为单个换行,移除文本首尾的多余空白与空换行
- 按统一格式拼接写入,避免相邻内容粘连
- 把全格式换行(Windows端
修改后的代码示例
import re from flask import redirect, url_for from flask_login import login_required # 替换为你项目中实际的Textfile模型导入路径 from models import Textfile @app.route('/textCreate', methods=['GET','POST']) @login_required def textCreate(): textData = Textfile.query.all() # newline='' 禁止Python自动转换换行符,从根源避免转义导致的多余空行 with open('training_data/training.txt', 'w', newline='') as fh: for line in textData: # 统一所有格式的换行标记 cleaned_content = line.text.replace('\r\n', '\n').replace('\r', '\n') # 折叠连续换行,清除首尾冗余空白 cleaned_content = re.sub(r'\n+', '\n', cleaned_content).strip() # 写入清洗后的内容,末尾加标准换行保证排版连续 fh.write(cleaned_content + '\n') return redirect(url_for('admin'))
效果验证
修复后导出的TXT文件会完全匹配输入的排版逻辑,仅在内容之间保留单个标准换行,不会出现多余空行。
内容的提问来源于stack exchange,提问作者Uzair Khan
相关产品推荐
相关产品推荐

