快速回顾:一次使用ai编程处理单文件的特定文本内容筛选的记录

需求描述

在neatireader上阅读书籍,然后通过标注做了摘要笔记,但是软件上导出笔记到印象笔记软件失败,使用纯文本方式复制,有其他不相关的内容在,希望通过编程的方式对文本内容进行过滤;

关键特征强调

纯文本内容(关注文本特征)示例如下

<div>第1条</div><div>颜色:红色</div><div>高亮文本:2014年9月第1版</div><div>笔记内容:</div><div>更新时间:2025-06-03 22:26:09</div><div>==================================================================</div><div>第2条</div><div>颜色:红色</div><div>高亮文本:“好书”的标准在我看来至少包括两点:内容科学、逻辑严谨却又通俗易懂、语言风趣;酷似专业书籍却也是大众读物</div><div>笔记内容:</div><div>更新时间:2025-06-03 22:26:21</div><div>==================================================================</div><div>第3条</div><div>颜色:红色</div><div>高亮文本:《心理医生为什么没有告诉我》就是这一类的好书。书中介绍的整合疗法可以根据个体的人格特质,生理、心理状况,以及表现出的症状,从放松(不同于一般意义的放松)、身体锻炼、日常饮食调节、正念冥思等方面,配合暴露疗法、脱敏疗法、内观疗法等制订出个性化的治疗模式,再结合药物治疗,从而取得很好的疗效</div><div>笔记内容:</div><div>更新时间:2025-06-03 22:26:32</div><div>==================================================================</div>

向ai的提问

在豆包ai上进行了提问内容

对话1-1:希望通过python代码,实现对本地单个html文件中指定内容的批量提取,提取文本间有空格区分,需要提取的内容标志是高亮文本开头;
对话1-2:尝试对如下内容中的高亮文本内容进行提取,贴上一小段包含特征的文本内容;
对话1-3:将html文件的路径以对话框的方式提示用户输入;

这是最后生成的代码文件,直接在trae cn软件上执行,能够正常运行,对应弹框选中待处理的html文本,然后选择输出txt的文件名,能够执行成功;

对生成代码文件的尝试执行和微调

from bs4 import BeautifulSoup
import tkinter as tk
from tkinter import filedialog, messagebox
import sys

def extract_highlighted_content(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    highlighted_texts = []
    current_entry = None
    
    for div in soup.find_all('div'):
        text = div.get_text(strip=True)
        if text.startswith('第') and text.endswith('条'):
            current_entry = {'序号': text, '高亮文本': ''}
            highlighted_texts.append(current_entry)
        elif current_entry and text.startswith('高亮文本:'):
            current_entry['高亮文本'] = text[5:].strip()  # 去掉"高亮文本:"前缀
    
    return highlighted_texts

def main():
    # 创建隐藏的Tkinter根窗口
    root = tk.Tk()
    root.withdraw()  # 隐藏主窗口
    
    # 显示文件选择对话框
    messagebox.showinfo("提示", "请选择要处理的HTML文件")
    file_path = filedialog.askopenfilename(
        title="选择HTML文件",
        filetypes=[("HTML文件", "*.html;*.htm"), ("所有文件", "*.*")]
    )
    
    if not file_path:
        messagebox.showinfo("取消", "操作已取消")
        sys.exit(0)
    
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            html_content = file.read()
    except FileNotFoundError:
        messagebox.showerror("错误", f"找不到文件: {file_path}")
        sys.exit(1)
    except Exception as e:
        messagebox.showerror("错误", f"读取文件时出错: {str(e)}")
        sys.exit(1)
    
    results = extract_highlighted_content(html_content)
    
    if not results:
        messagebox.showinfo("结果", "未找到匹配的高亮文本内容")
        sys.exit(0)
    
    output = []
    for idx, entry in enumerate(results, 1):
        output.append(f"第{idx}条高亮文本:")
        output.append(entry['高亮文本'])
        output.append("-" * 50)
    
    output_text = '\n'.join(output)
    
    # 显示保存对话框
    messagebox.showinfo("提示", "请选择保存结果的文件位置")
    save_path = filedialog.asksaveasfilename(
        title="保存结果",
        defaultextension=".txt",
        filetypes=[("文本文件", "*.txt"), ("所有文件", "*.*")]
    )
    
    if save_path:
        try:
            with open(save_path, 'w', encoding='utf-8') as file:
                file.write(output_text)
            messagebox.showinfo("成功", f"结果已保存至: {save_path}")
        except Exception as e:
            messagebox.showerror("错误", f"保存文件时出错: {str(e)}")
            sys.exit(1)
    else:
        # 如果用户取消保存,直接显示结果
        messagebox.showinfo("提取结果", output_text)

if __name__ == "__main__":
    main()    

在这里插入图片描述

处理之后的效果确认

处理之后的文本内容示例如下

第1条高亮文本:
2014年9月第1版
--------------------------------------------------
第2条高亮文本:
“好书”的标准在我看来至少包括两点:内容科学、逻辑严谨却又通俗易懂、语言风趣;酷似专业书籍却也是大众读物
--------------------------------------------------
第3条高亮文本:
《心理医生为什么没有告诉我》就是这一类的好书。书中介绍的整合疗法可以根据个体的人格特质,生理、心理状况,以及表现出的症状,从放松(不同于一般意义的放松)、身体锻炼、日常饮食调节、正念冥思等方面,配合暴露疗法、脱敏疗法、内观疗法等制订出个性化的治疗模式,再结合药物治疗,从而取得很好的疗效
--------------------------------------------------
第4条高亮文本:
上世纪90年代,认知行为疗法逐渐发展成为治疗焦虑症的首要疗法。

探索尝试的过程回顾

之前有尝试过python对html页面指定元素的筛选和提取,所以知道是具有可行性的;–是否可行的判断
对于输入/处理/输出的环节中,待处理文本的路径和位置要明确,或者就是通过窗口的方式可以手工选择,弹框选择文本路径的方式,对代码复用和人类友好性更好一些;–能否更好的判断

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐