gpt4 book ai didi

python - 为什么我会得到一个(看似)正确拆分的字符串的 IndexError?

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:52 28 4
gpt4 key购买 nike

我目前有一个脚本应该获取并返回 Bit.ly 链接的点击次数。我首先从 Bitly url 收集和读取数据,我似乎在做正确的事情。

    bitly_data = "https://api-ssl.bitly.com/v3/link/clicks?access_token=ACCESS_TOKEN&link=http://bit.ly/"+link
src = urllib2.urlopen(bitly_data)
src = src.read()

link 是诸如 TY8lnd 之类的东西时,src 是一个看起来像这样的字符串

{"status_code": 200, "data": {"units": -1, "tz_offset": -4, "unit": "day", "link_clicks": 535}, "status_txt": "OK"}

我现在想解析这个字符串以获取 link_clicks 之后的数值。我认为最好的方法是进行两次拆分。

    src=src.split('clicks": ')
src = str(src[1])
clicks = src.split('}, "status')
clicks = clicks[0]

当我运行它时,点击次数最终确实等于正确的数字,而且仅此而已。但是,终端为 src = str(src[1]) 行返回 IndexError。我尝试摆脱 str() 但这没有效果。非常感谢尽管最终值已得到纠正,但我仍会收到此错误的理解。

这是完整的回溯:

Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/Zach/Dropbox/bitly/bit.py", line 35, in settings
src = str(src[1])
IndexError: list index out of range

提前致谢。

最佳答案

此响应是 json,因此解码 json 而不是尝试解析字符串。

>>> import json
>>> resp = '{"status_code": 200, "data": {"units": -1, "tz_offset": -4, "unit": "day", "link_clicks": 535}, "status_txt": "OK"}'
>>> resp_object = json.loads(resp)
>>> resp_object and resp_object.get('data', {}).get('link_clicks', 0) or 0
535

关于python - 为什么我会得到一个(看似)正确拆分的字符串的 IndexError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166940/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com