因此,我得到了一个CSV文件,该文件将大约1000首歌曲分类,给出的数据是几秒钟内歌曲的Artist
,Album
,Song_Title
和Duration
我通过执行以下操作导入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循环的方式有问题,但是我花了很多时间尝试不同的变量,并尝试使用整数索引全部无效。
答案 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]))