Python编写CSV作曲家搜索函数运行返回空列表问题求助
代码问题排查与修复
核心错误点
- if判断逻辑错误:你在判断条件中额外加了
and record_id in row[composer_column]的逻辑,这里的record_id是你传入的列名字符串BL record ID,该字符串不可能出现在存储作曲家姓名的列内容中,导致条件永远不成立,不会往结果列表写入数据,这是返回空列表的核心原因。 - 调用函数后未输出结果:你调用了
ComposerSearch函数但没有打印返回值,就算逻辑正确也无法看到返回的ID列表。 - (可选优化点)未处理大小写/空格匹配问题:如果输入的姓名大小写、前后空格和CSV内的内容不一致,也会出现匹配不到的情况,可增加标准化处理提升匹配准确率。
修复后的代码
import csv # 导入语句建议放在文件头部,不要放在函数内部 def ComposerSearch(filename, composer_column, name_search, record_id_col): ids_list = [] # 对搜索关键词做标准化:转小写+去除前后空格 name_search_norm = name_search.strip().lower() with open(filename, newline = '', encoding = 'utf-8-sig') as csvfile: reader = csv.DictReader(csvfile) for row in reader: # 仅保留必要的判断逻辑,同时对CSV内的作曲家内容做标准化 composer_content = row[composer_column].strip().lower() if name_search_norm in composer_content: ids_list.append(row[record_id_col]) return ids_list name_search = input("Enter Composer's name: ") result = ComposerSearch('bl_printed_music_500.csv', 'Composer', name_search, 'BL record ID') # 打印返回结果 print("匹配到的BL record ID列表:", result)
内容的提问来源于stack exchange,提问作者Sasha
相关产品推荐
相关产品推荐

