背景/我在做什么
您好,我正在使用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 = None
和content = None
,但这没有用。我无法确定它为什么这样做?谢谢你的帮助。