使用用户输入的关键字在CSV文件中搜索项目

时间:2019-12-08 23:33:45

标签: python pandas 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循环的方式有问题,但是我花了很多时间尝试不同的变量,并尝试使用整数索引全部无效。

1 个答案:

答案 0 :(得分:1)

尝试一下:

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]))
相关问题