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

如何用Python在多份CSV文件中查找指定泰语词汇并返回文件名列表

解决目录中查找含指定泰语词汇的CSV文件问题

问题描述

我在一个目录中有100多个文件,需要找出其中包含目标泰语词汇的CSV文件。尝试了以下Python代码但无法正常运行:

import pandas as pd
import re
import os

FOLDER_PATH = r'C:\Users\project'

list = os.listdir(FOLDER_PATH)

def is_name_in_csv(word,csv_file):
  with open(csv_file,"r") as f:
    data = f.read()
  return bool(re.search(word, data))

word = "บัญชีรายรับ"
for csv_file in list:
  if is_name_in_csv(word,csv_file):
    print(f"find the {word} in {csv_file}")

代码问题分析

  • 使用list作为变量名,覆盖了Python内置的list类型,可能引发后续逻辑错误
  • os.listdir()仅返回文件名,不是完整文件路径,直接用文件名打开会找不到文件(除非当前工作目录恰好是目标目录)
  • 未过滤非CSV文件,会遍历目录中所有类型文件,打开非文本文件时可能报错
  • 打开文件时未指定编码,泰语属于Unicode字符,默认编码会导致读取乱码,进而让正则匹配失效

修正后的代码

import re
import os

FOLDER_PATH = r'C:\Users\project'
# 避免使用内置关键字作为变量名
file_names = os.listdir(FOLDER_PATH)

def is_word_in_csv(word, csv_file_path):
    # 指定utf-8编码读取文件,确保泰语字符正确解析
    with open(csv_file_path, "r", encoding="utf-8") as f:
        data = f.read()
    # re默认支持Unicode,直接匹配泰语词汇即可
    return bool(re.search(word, data))

target_word = "บัญชีรายรับ"
for file_name in file_names:
    # 仅处理CSV文件
    if file_name.lower().endswith(".csv"):
        full_file_path = os.path.join(FOLDER_PATH, file_name)
        if is_word_in_csv(target_word, full_file_path):
            print(f"找到词汇 {target_word} 在文件 {file_name}")

关键修改说明

  • 将变量名list改为file_names,避免与内置类型冲突
  • 使用os.path.join()拼接完整文件路径,确保能正确定位文件
  • 添加.csv后缀过滤逻辑,只处理目标类型文件
  • 打开文件时指定encoding="utf-8",保证泰语字符正常读取
  • 调整变量名(如word改为target_word),提升代码可读性

内容的提问来源于stack exchange,提问作者Tanatchat Laemkom Film

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:30:31