import os
# ================= 配置区域 =================
INPUT_FILE = '初始文本.txt' # 你的原始脏数据
OUTPUT_FILE = '文本.txt' # 清洗后给模型吃的干净数据
# ===========================================
def clean_special_format(text):
"""
专门针对 '收起评价' 和 双引号 格式的清洗函数
"""
# 1. 先去头去尾的空格、换行符、制表符
# 这一步能杀掉 90% 的 "纯缩进空行"
text = text.strip()
# 2. 去掉那个烦人的 "收起评价"
text = text.replace("收起评价", "")
# 3. 去掉包裹在最外面的双引号
# 注意:这里用 replace 比较暴力,如果文中本来就有引号也会被删
# 但对于评论数据,删掉引号通常没影响
text = text.replace('"', '')
# 4. 再次清洗 (因为删掉 "收起评价" 后,可能又露出了空格)
text = text.strip()
return text
def main():
if not os.path.exists(INPUT_FILE):
print(f"❌ 找不到文件: {INPUT_FILE},请确认文件名。")
return
print(f"📖 正在读取 {INPUT_FILE} ...")
valid_lines = []
# encoding='utf-8': 如果报错,可以试着改成 'gb18030'
with open(INPUT_FILE, 'r', encoding='utf-8', errors='ignore') as f:
raw_lines = f.readlines()
print(f"🔄 正在清洗 {len(raw_lines)} 行原始数据...")
for i, line in enumerate(raw_lines):
# 执行清洗
cleaned = clean_special_format(line)
# 5. 【核心保命步骤】
# 只有当清洗完长度 > 0 时,才算有效数据
# 那些原本只有制表符的行,现在变成了空串,会被自动扔掉
if len(cleaned) > 0:
valid_lines.append(cleaned)
# 写入结果
print(f"💾 正在保存至 {OUTPUT_FILE} ...")
with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
for line in valid_lines:
f.write(line + '\n')
print("-" * 30)
print(f"✅ 清洗完成!")
print(f" 原始行数: {len(raw_lines)}")
print(f" 有效行数: {len(valid_lines)}")
print(f" 🗑️ 剔除垃圾行: {len(raw_lines) - len(valid_lines)}")
print("-" * 30)
print("🚀 现在你可以用 _02embedding_sentence_transformer.py 跑这个新文件了!")
if __name__ == "__main__":
main()