【发布时间】:2022-01-04 01:22:49
【问题描述】:
我想创建一个函数来在给定的数据集中按名称搜索作曲家。 并返回与一位作曲家相关的适当“BL 记录 ID”列表。下面是我的代码,但是,运行后我得到一个空列表...
def ComposerSearch(filename, composer_column, name_search, record_id):
import csv
ids_list = []
with open(filename, newline = '', encoding = 'utf-8-sig') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if name_search in row[composer_column] and record_id in row[composer_column]:
ids_list.append(row[record_id])
return ids_list
name_search = input("Enter Composer's name: ")
ComposerSearch('bl_printed_music_500.csv', 'Composer', name_search, 'BL record ID')
【问题讨论】:
-
所以如果我理解名称和记录是在同一行和同一列?
-
可能你传递的文件名不正确,而 reader 是空的,尝试逐行运行以调试失败的地方
-
您能否通过添加两件事使您的问题可重现:给我们一个最小的 CSV 数据集进行测试,其中包含两个或三个记录,并将对
input()的调用替换为硬编码查询我们可以剪切和粘贴吗?以这种方式进行测试并查看发生了什么会容易得多。 -
感谢您的回复!我已经想通了!答案如下