# 导入需要的库（Python自带，无需额外安装）
import csv
import re
import os

def load_ielts_text(file_path):
    """
    读取雅思真题文本文件
    :param file_path: 文本文件路径（比如'C04T1R1.txt'）
    :return: 读取到的文本内容
    """
    # 检查文件是否存在，避免报错
    if not os.path.exists(file_path):
        print(f"错误：找不到文件 {file_path}，请检查文件路径是否正确！")
        return None
    # 以UTF-8编码读取文件（避免中文乱码）
    with open(file_path, 'r', encoding='utf-8') as f:
        text = f.read()
    return text

def split_english_sentences(text):
    """
    智能拆分英文句子（解决普通拆分的断句错误）
    :param text: 原始英文文本
    :return: 拆分后的句子列表
    """
    # 替换特殊缩写后的点，避免误拆句子
    abbreviations = {
        'Mr.': 'MR_PERIOD',
        'Ms.': 'MS_PERIOD',
        'Mrs.': 'MRS_PERIOD',
        'Dr.': 'DR_PERIOD',
        'e.g.': 'EG_PERIOD',
        'i.e.': 'IE_PERIOD'
    }
    temp_text = text
    for abbr, temp in abbreviations.items():
        temp_text = temp_text.replace(abbr, temp)
    
    # 按句子结束符拆分句子
    sentence_pattern = r'(?<=[.!?])\s+(?=[A-Z])'
    sentences = re.split(sentence_pattern, temp_text.strip())
    
    # 还原缩写并过滤无效句子
    cleaned_sentences = []
    for sent in sentences:
        for abbr, temp in abbreviations.items():
            sent = sent.replace(temp, abbr)
        sent = sent.strip()
        if len(sent) > 5:
            cleaned_sentences.append(sent)
    
    return cleaned_sentences

def generate_ielts_csv(sentences, csv_save_path, source_info):
    """
    生成雅思例句CSV数据库（已移除sentence_id和difficulty字段）
    :param sentences: 拆分后的句子列表
    :param csv_save_path: CSV文件保存路径
    :param source_info: 真题来源
    """
    # ========== 修改点1：删除表头里的sentence_id ==========
    # 仅保留3个字段：英文原句、中文释义、真题来源
    csv_headers = ['original_sent', 'translated_sent', 'source']
    
    # 写入CSV数据
    with open(csv_save_path, 'w', encoding='utf-8', newline='') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=csv_headers)
        writer.writeheader()
        
        # 遍历句子列表，逐行写入
        for sentence in sentences:
            # ========== 修改点2：删除row_data里的sentence_id ==========
            row_data = {
                'original_sent': sentence,   # 英文原句
                'translated_sent': '',       # 中文释义（后续手动填）
                'source': source_info        # 真题来源
                # 完全删掉了sentence_id相关代码
            }
            writer.writerow(row_data)
    
    print(f"✅ CSV数据库生成成功！文件保存在：{os.path.abspath(csv_save_path)}")
    print(f"📝 共生成 {len(sentences)} 条例句")

# 主函数（程序入口）
if __name__ == '__main__':
    # ====================== 需修改的参数 ======================
    text_file_path = "C04T1R1.txt"       # 你的真题文本文件路径
    csv_save_path = "C04T1R1.csv"   # 生成的CSV路径
    ielts_source = "C04T1R1"  # 真题来源
    # =========================================================
    
    # 1. 读取文本
    print("🔍 正在读取雅思真题文本...")
    ielts_text = load_ielts_text(text_file_path)
    if ielts_text is None:
        exit()
    
    # 2. 拆分句子
    print("✂️ 正在拆分英文句子...")
    sentences = split_english_sentences(ielts_text)
    if not sentences:
        print("❌ 没有拆分到有效句子，请检查文本内容！")
        exit()
    
    # 3. 生成CSV
    print("📊 正在生成CSV数据库...")
    generate_ielts_csv(sentences, csv_save_path, ielts_source)