Python3 - 请求 - 迭代 - 第二次迭代时的KeyError

时间:2018-01-24 21:53:44

标签: python api python-requests

背景/我在做什么

您好,我正在使用Requests库从API检索信息。我正在迭代.csv文件中的数据,然后发送带有构造URL的请求。

然后我想采用r.json()并提取特定的信息。

然后我接受了这些信息并在其上运行一些正则表达式来分解它,然后我将用它来构造一个新的字符串。

with requests.Session() as s:
for i, (event) in enumerate(csv_data, start=1):
    url = 'https://api.someurl.com/datapoint1' + datapoint1+ '/datapoint2/' + str(datapoint2)
    headers = {'key': key, 'secret': secret}

    r = s.get(url, headers = headers)

    content = r.json()
    print(content)
    something = content[u'something']
    print(something)

    data1 = re.findall(r'pattern', something)[0]
    data2 = re.findall(r'pattern', something)[0]

    data_constructed = 'string' + data1+ 'string' + data2 + 'string'
    print(data_constructed)

问题

第一次迭代运行正常,我在屏幕上看到打印数据,但是在循环的第二次迭代中,我得到KeyError

something = content[u'something']
KeyError: 'something'

奇怪的是,如果我注释掉正则表达式的东西,所有代码都可以正常工作:

with requests.Session() as s:
for i, (event) in enumerate(csv_data, start=1):
    url = 'https://api.someurl.com/datapoint1' + datapoint1+ '/datapoint2/' + str(datapoint2)
    headers = {'key': key, 'secret': secret}

    r = s.get(url, headers = headers)

    content = r.json()
    print(content)
    something = content[u'something']
    print(something)

    # data1 = re.findall(r'pattern', something)[0]
    # data2 = re.findall(r'pattern', something)[0]

    # data_constructed = 'string' + data1+ 'string' + data2 + 'string'
    # print(data_constructed)

这让我疯了,我无法弄明白为什么。我尝试过r = Nonecontent = None,但这没有用。我无法确定它为什么这样做?谢谢你的帮助。

0 个答案:

没有答案