首页 > 解决方案 > 使用用户输入的关键字在 CSV 文件中搜索项目

问题描述

所以我得到了一个 CSV 文件,它对大约 1000 首歌曲进行了分类,给出的数据是ArtistAlbumSong_TitleDuration

我通过执行以下操作导入 CSV 文件:

column_names = ['artist', 'album', 'song_title', 'duration']

track_list = pd.read_csv('/Users/Basel/Desktop/Class Files/JukeBoxHero/music-collection.csv', names=column_names,
                         header=None)

作为参考,这是 CSV 文件中的一行示例:

Aerosmith,A Little South Of Sanity Disc 1,Falling In Love (Is Hard On The Knees),209

我尝试使用的功能是允许用户输入搜索词并获取名称中包含搜索词的所有歌曲的列表,如下所示:

def findSongs(songList):
    searchTerm=input("searching for?")
    for songs in songList:
        if searchTerm in songs:
            print("-----------------------")
            print("Artist: " + currentSong['artist'])
            print("Album: " + currentSong['album'])
            print("Title: " + currentSong['song_title])
            print("Duration: " + currentSong['duration'] + "seconds")

但是,当我尝试使用print(findSongs(track_list))终端调用该函数时,似乎总是输出None。我的猜测是我构建 for 循环的方式有问题,但我花了很多时间尝试不同的变量并尝试使用整数索引都无济于事。

标签: pythonpandascsv

解决方案


尝试这个:

def findSongs(songList):
    searchTerm=input("searching for?")
    songList = songList[songList.song_title.str.contains(searchTerm)].to_numpy()
    for songs in songList:
            print("-----------------------")
            print("Artist: " + songs[0])
            print("Album: " + songs[1])
            print("Title: " + songs[2])
            print("Duration: " + str(songs[3]))

findSongs(track_list)

输出:

searching for?Falling
-----------------------
Artist: Aerosmith
Album: A Little South Of Sanity Disc 1
Title: Falling In Love (Is Hard On The Knees)
Duration: 209

更新后的版本:

def findSongs(songList):
  while True:
    searchTerm=input("searching for ( exit to exit )?")
    if searchTerm == 'exit':
       break
    songList = songList[songList.song_title.str.contains(searchTerm)].to_numpy()
    if len(songList) == 0:
       print("No Song found ")
       continue
    for songs in songList:
            print("-----------------------")
            print("Artist: " + songs[0])
            print("Album: " + songs[1])
            print("Title: " + songs[2])
            print("Duration: " + str(songs[3]))

推荐阅读