【问题标题】:My function returns empty list while I try to import data from csv file当我尝试从 csv 文件导入数据时,我的函数返回空列表
【发布时间】: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() 的调用替换为硬编码查询我们可以剪切和粘贴吗?以这种方式进行测试并查看发生了什么会容易得多。
  • 感谢您的回复!我已经想通了!答案如下

标签: python list function csv


【解决方案1】:
    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]:
    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')

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 2015-07-29
  • 2019-08-03
相关资源
最近更新 更多