如何为Python编写的Telegram词典机器人实现CSV单词前缀搜索功能?
功能实现方案
现有代码问题排查
- CSV读取逻辑冗余:你当前使用默认逗号分隔的csv读取规则,后续手动拆分制表符,容易出现解析错误
- 匹配逻辑不符合要求:用
in关键字实现的是任意位置包含匹配,不是前缀匹配,且没有处理大小写差异,比如用户输入ent无法匹配大写开头的Entity
修改后代码
import csv def malayalamDict(prefix): mDef = [] eWrd = [] # 统一转换为小写实现大小写不敏感匹配,符合用户输入习惯 target_prefix = prefix.lower() with open("data/olam-enml.csv", "r", encoding="utf-8") as f: # 直接指定制表符为分隔符,无需后续手动拆分 reader = csv.reader(f, delimiter="\t") # 跳过表头行(id english_word part_of_speech definition) next(reader) for row in reader: # 取第二列english_word,转小写后判断是否以前缀开头 if row[1].lower().startswith(target_prefix): eWrd.append(row[1]) mDef.append(row[-1]) return mDef, eWrd
可选补充逻辑
如果需要限制用户仅能输入2-3位首字母查询,可以在调用该函数的上层逻辑中增加长度校验:
user_query = 用户输入内容.strip() if 2 <= len(user_query) <= 3: definitions, words = malayalamDict(user_query) # 此处添加组装返回结果给Telegram用户的逻辑 else: # 此处添加提示用户输入2-3位首字母的逻辑 pass
内容的提问来源于stack exchange,提问作者Anzil R
相关产品推荐
相关产品推荐

