【问题标题】:searching sickbeard api output and print only keyword line搜索sickbeard api输出并仅打印关键字行
【发布时间】:2014-05-07 19:31:39
【问题描述】:

目前我正在尝试创建一个 python 脚本,该脚本将通过请求特殊 url 并获取信息来运行我的病态 api 代码。它正在输出以下正确的代码:

{
    "data": {
        "missed": [
            {
                "airdate": "2014-03-27", 
                "airs": "Friday 02:05", 
                "ep_name": "Episode 24", 
                "ep_plot": "", 
                "episode": 24, 
                "network": "MBS", 
                "paused": 0, 
                "quality": "SD", 
                "season": 1, 
                "show_name": "Kill la Kill", 
                "show_status": "Continuing", 
                "tvdbid": 272074, 
                "weekday": 4
            }, 
            {
                "airdate": "2014-03-27", 
                "airs": "Thursday 10:00 PM", 
                "ep_name": "Tyga", 
                "ep_plot": "", 
                "episode": 18, 
                "network": "MTV", 
                "paused": 0, 
                "quality": "SD", 
                "season": 4, 
                "show_name": "Ridiculousness", 
                "show_status": "Continuing", 
                "tvdbid": 250793, 
                "weekday": 4
            }, 
            {
                "airdate": "2014-03-27", 
                "airs": "Thursday 10:00 PM", 
                "ep_name": "Guy Fieri", 
                "ep_plot": "", 
                "episode": 19, 
                "network": "MTV", 
                "paused": 0, 
                "quality": "SD", 
                "season": 4, 
                "show_name": "Ridiculousness", 
                "show_status": "Continuing", 
                "tvdbid": 250793, 
                "weekday": 4
            }
        ]
    }, 
    "message": "", 
    "result": "success"
}

现在我希望它只显示带有关键字“show_name”的行。例如,我希望它只显示“kill la kill”、荒谬和荒谬。我将使用它,所以如果我说命令“今天有什么节目”,它将运行 python 脚本并输出今天的节目。每当我运行代码时,它都会运行并且什么也不显示。

from urllib2 import Request, urlopen, URLError

request = Request('http://192.168.1.***:8081/api/*****/?cmd=future&sort=date&type=missed')

try:
    response = urlopen(request)
    tv_shows = response.read()
    for single_line in tv_shows:
        if 'show_name' in single_line:
            print single_line

except URLError, e:
    print ('Error') 

我对 python 编程非常陌生,因此非常感谢任何帮助。

【问题讨论】:

    标签: python list for-loop for-in-loop


    【解决方案1】:

    几点。首先,要使用该数据,您需要将其转换为字典(使用字典比使用字符串容易得多):

    import json
    
    ...
    
    tv_shows = json.loads(response.read())
    

    其次,要访问您感兴趣的列表,请使用tv_shows['data']['missed']

    因此,您的代码可能如下所示:

    import json
    from urllib2 import Request, urlopen, URLError
    
    request = Request('http://192.168.1.***:8081/api/*****/?cmd=future&sort=date&type=missed')
    
    try:
        response = urlopen(request)
        tv_shows = json.loads(response.read())
        for show_data in tv_shows['data']['missed']:
            if 'show_name' in show_data:
                print show_data['show_name']
    
    except URLError, e:
        print ('Error')
    

    这可能有助于您了解字典 - http://www.tutorialspoint.com/python/python_dictionary.htm

    【讨论】:

    • 首先感谢您的帮助。虽然它在第 10 行出现错误,但未定义“show_data”。现在我将其更改为 tv_shows 并且它运行但不再显示任何内容:(
    • 如果我只是在 print tv_shows['show_name'] 下的一个 print 语句并说类似 print ('it working') 并运行它,它不会再显示任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    相关资源
    最近更新 更多