我的代码出现问题。 我无法将它附加到列表not_found以及由于某种原因它循环两次。 谁能指出我正确的方向?该匹配适用于my_track,但在匹配时不匹配。
# coding: utf-8
#!/usr/bin/env python
import spotimeta
import sys
import time
my_tracks = raw_input("Please enter a sentence: ").title().split()
playlist = []
real_playlist = []
not_found = []
def check_track(track_name, my_track, track_href):
if track_name == my_track:
playlist.append(track_href)
return 1
# make sure the user does not input a single word as input
if (len(my_tracks) > 1):
path = my_tracks[1]
else:
sys.exit("Invalid input, please enter a sentence.")
# let's search
for my_track in my_tracks:
match = 0
print "Searching for '%s'\n" % (my_track),
data = spotimeta.search_track(my_track)
for result in data['result']:
if not match == 1:
try:
match = check_track(result["name"],my_track,result["href"])
except Exception, e:
error = "not available"
else:
if data['total_results'] > 0:
not_found.append(my_track)
答案 0 :(得分:0)
您应该尝试调试它。最简单的调试方法之一是添加以下行:
import pdb
pdb.set_trace()
然后,当您运行脚本时,它将停在调试器的set_trace
行。
查看http://docs.python.org/library/pdb.html了解详情。
答案 1 :(得分:0)
根据我的理解,你正在尝试做类似的事情:
for my_track in my_tracks:
print "Searching for '%s'\n" % (my_track),
data = spotimeta.search_track(my_track)
for result in data['result']:
if result['name'] == my_track:
playlist.append(result['href'])
elif data['total_results'] > 0:
not_found.append(my_track)
这或多或少会对你有用吗? 请帮我理解。
答案 2 :(得分:0)
马上,我注意到了两件事。
首先,你有点迟到了data['total_results']
;如果总结果值大于零(等待,什么?),那么您希望立即将其添加到列表中并继续操作而不解析数据。在来自spotimeta.search_track()
的电话之后,我会检查这是否是您不想要的数据(然后将其添加到列表中)。
其次,我对你的for
循环的意图感到困惑。如果您要查找一个项,那么您可以使用in
语句(my_track in result
)。