无法得到我的循环&匹配以附加到正确的列表

时间:2012-01-20 14:31:32

标签: python

我的代码出现问题。 我无法将它附加到列表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)

3 个答案:

答案 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)。