python - TypeError:字符串索引必须是整数,同时使用 Gerrit rest API 在 pyspark 中提取数据
问题描述
当我尝试通过 gerrit rest API 获取数据时,出现上述错误。代码如下:
from requests.auth import HTTPBasicAuth
from pygerrit2.rest import GerritRestAPI
import os
auth = HTTPBasicAuth('user', 'pass') headers={'Content-Type': 'application/json; charset=UTF-8'}
rest = GerritRestAPI(url='testgerriturl.com', auth = auth)
changes = rest.get("changes/?q=all&o=DETAILED_ACCOUNTS&n=5", headers={'Content-Type': 'application/json'})
data={'status':[]}
for change in changes:
for d in change:
data['status'].append(d[u'status'])
我正在使用的 json 类型为:
{ u'状态':u'合并',u'主题':u'master_e',u'更新':u'2018-09-04 05:40:19.000000000',u'插入':549,u'创建':你'2017-08-31 08:03:05.000000000',你'change_id':你'I7ed2f8da71e38f4908acf92f36dd',你'标签':[],你'删除':178,你'提交':你'2018- 09-04 05:39:48.000000000', u'submittable': False, u'project': u'testdemo', u'branch': u'master', u'owner': {u'username': u' usertest',u'email':u'user@abc.com',u'name':u'userdemo',u'_account_id':36710},u'_number':71090131,u'id':u'fm~master~I7ed71f4908acf92f36ddac3ff85b271e', u 'subject': u '%TBC FC: OSS_FC_0 App_NBI: RESTful Web Service Data Access API-PM Support : add IUM scripts' }
我希望以如下形式输出:
{'status': ['MERGED'], 'deletions': [178], 'updated': ['2018-09-03 20:58:26.000000000'], 'insertions': [664], 'created': [2018-08-28 08:16:56.000000000']}
我在这里做错了什么,有人可以纠正我这里需要做什么吗?谢谢
解决方案
这应该会有所帮助。
changes = { u'status': u'MERGED', u'topic': u'master_e', u'updated': u'2018-09-04 05:40:19.000000000', u'insertions': 549, u'created': u'2017-08-31 08:03:05.000000000', u'change_id': u'I7ed2f8da71e38f4908acf92f36dd', u'hashtags': [], u'deletions': 178, u'submitted': u'2018-09-04 05:39:48.000000000', u'submittable': False, u'project': u'testdemo', u'branch': u'master', u'owner': { u'username': u'usertest', u'email': u'user@abc.com', u'name': u'userdemo', u'_account_id': 36710 }, u'_number': 71090131, u'id': u'fm~master~I7ed71f4908acf92f36ddac3ff85b271e', u'subject': u'%TBC FC: OSS_FC_0 App_NBI: RESTful Web Service Data Access API- PM Support : add IUM scripts' }
data={'status':[], 'deletions':[], 'updated':[], 'insertions':[], 'created':[], }
for k, v in data.items():
if k in changes:
data[k].append(changes[k])
print(data)
输出:
{'status': [u'MERGED'], 'deletions': [178], 'updated': [u'2018-09-04 05:40:19.000000000'], 'insertions': [549], 'created': [u'2017-08-31 08:03:05.000000000']}
推荐阅读
- javascript - 页面重新加载时如何保存复选框的值?
- python - 钥匙上的python海龟模块
- python - 寻找正则表达式来解析格式错误的 HTML 字符串
- html - 媒体查询中定义的与大小相关的断点是否有名称?
- reactjs - 找不到模块:无法解析“../components”
- python - 即使列表的迭代到位,墙壁碰撞也不起作用
- c++ - 试图在函数中传递数组,没有得到重载函数错误的实例
- javascript - Javascript:无法从 localStorage 中提取
- reactjs - 如何在 Asp net core 应用程序中向未经授权的用户隐藏反应组件?
- javascript - 找不到命令:nodejs-backend