如何检查字符串是否存在于CSV表头?自定义函数无法正确返回True
问题:CSV匹配函数无法正确返回True
我编写了如下函数,用于检查参数final_word是否存在于指定CSV文件中,但即便该字符串与CSV文件中的某一内容完全一致,函数也无法返回True:
def check_csv(final_word): with open("directory\trap_words.csv", "r") as f: reader = csv.reader(f) for i in reader: str(i) if final_word in i: return True else: return False
CSV文件内容截图:
错误原因分析
- 循环提前终止:函数遍历第一行时,无论匹配结果如何都会直接执行
return,后续行完全不会被检查。若第一行内容与final_word不匹配,函数直接返回False,跳过了剩余行的查找。 - 路径转义错误:文件路径中的
\t是转义字符(代表制表符),并非字面意义的t,导致程序无法定位到目标CSV文件。 - 无效类型转换:
str(i)仅将列表转为字符串,但未赋值给变量,对后续判断无任何作用,属于冗余代码。
修正后的函数
import csv def check_csv(final_word): # 使用原始字符串避免转义,或替换为正斜杠路径 with open(r"directory\trap_words.csv", "r", encoding="utf-8") as f: reader = csv.reader(f) for row in reader: # 遍历行内所有元素,兼容多列场景 for item in row: # 去除元素前后空白,避免空格/换行导致匹配失败 if final_word.strip() == item.strip(): return True # 遍历完所有行未找到匹配,返回False return False
额外说明
- 若CSV为单列结构(每行仅一个单词),可简化为
if final_word.strip() == row[0].strip(),但遍历行内元素的写法兼容性更强。 - 建议指定文件编码(如
encoding="utf-8"),避免编码异常导致读取内容失真。
内容的提问来源于stack exchange,提问作者Rrezon Beqiri
相关产品推荐
相关产品推荐

