You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现CSV精准搜索(含Tkinter交互)功能求助

修正后的CSV精准搜索工具代码

以下是符合需求的可运行代码,实现了精准匹配(完全相等才会命中)、Tkinter交互界面,以及无匹配时的弹窗提示:

import csv
import tkinter as tk
from tkinter import messagebox, ttk

def search_csv():
    # 获取输入的搜索关键词,去除首尾空格
    keyword = entry.get().strip()
    if not keyword:
        messagebox.showwarning("提示", "请输入搜索关键词")
        return
    
    # 清空结果显示区域
    result_text.delete(1.0, tk.END)
    matched = False
    
    # 读取CSV文件(替换为你的实际文件路径)
    try:
        with open("your_file.csv", mode="r", encoding="utf-8") as file:
            reader = csv.reader(file)
            # 读取并显示表头(无表头可删除下方两行)
            header = next(reader)
            result_text.insert(tk.END, "\t".join(header) + "\n")
            result_text.insert(tk.END, "-"*50 + "\n")
            
            # 遍历行,精准匹配第一列(需搜索其他列可修改row[0]的索引,如row[1]对应第二列)
            for row in reader:
                if len(row) >= 1 and row[0] == keyword:
                    result_text.insert(tk.END, "\t".join(row) + "\n")
                    matched = True
                    
        if not matched:
            messagebox.info("搜索结果", "未找到匹配的记录")
    except FileNotFoundError:
        messagebox.showerror("错误", "未找到指定的CSV文件")
    except Exception as e:
        messagebox.showerror("错误", f"发生未知错误:{str(e)}")

# 创建主窗口
root = tk.Tk()
root.title("CSV精准搜索工具")
root.geometry("600x400")

# 输入区域布局
frame_input = ttk.Frame(root, padding="10")
frame_input.pack(fill=tk.X)

ttk.Label(frame_input, text="精准搜索关键词:").pack(side=tk.LEFT, padx=5)
entry = ttk.Entry(frame_input, width=30)
entry.pack(side=tk.LEFT, padx=5)
search_btn = ttk.Button(frame_input, text="搜索", command=search_csv)
search_btn.pack(side=tk.LEFT, padx=5)

# 结果显示区域布局
frame_result = ttk.Frame(root, padding="10")
frame_result.pack(fill=tk.BOTH, expand=True)

ttk.Label(frame_result, text="搜索结果:").pack(anchor=tk.W)
result_text = tk.Text(frame_result, wrap=tk.WORD)
scrollbar = ttk.Scrollbar(frame_result, orient=tk.VERTICAL, command=result_text.yview)
result_text.configure(yscrollcommand=scrollbar.set)
result_text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# 启动主循环
root.mainloop()

关键修正与说明

  • 精准匹配实现:用row[0] == keyword替代模糊匹配的in操作符,确保只有内容完全相等的行才会被命中(比如搜索App不会匹配Applebaum)
  • GUI交互优化:用Tkinter的Entry组件替代input(),添加空输入验证、滚动式结果显示区域,提升交互体验
  • 错误处理:增加文件不存在、未知异常的捕获逻辑,避免程序直接崩溃
  • 可定制调整:如需搜索其他列,修改row[0]中的索引即可(索引从0开始,对应CSV的第1列)

使用注意事项

  1. 将代码中的"your_file.csv"替换为你的实际CSV文件路径
  2. 如果CSV没有表头,删除读取表头的header = next(reader)和对应插入代码即可
  3. 若CSV文件编码为gbk等非utf-8格式,修改open函数的encoding参数为对应编码

内容的提问来源于stack exchange,提问作者user19851007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:56:39