为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会看到“ TypeError:字符串索引必须为整数”?

为什么会看到“ TypeError:字符串索引必须为整数”?

胡子哥哥 2019-09-21 14:35:41
我正在学习python并试图将github问题转换为可读形式。使用有关如何将JSON转换为CSV的建议?我想出了这个:import jsonimport csvf=open('issues.json')data = json.load(f)f.close()f=open("issues.csv","wb+")csv_file=csv.writer(f)csv_file.writerow(["gravatar_id","position","number","votes","created_at","comments","body","title","updated_at","html_url","user","labels","state"])for item in data:        csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])其中“ issues.json”是包含我的github问题的json文件。当我尝试运行它时,我得到File "foo.py", line 14, in <module>csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])TypeError: string indices must be integers我在这里想念什么?哪些是“字符串索引”?我确定一旦完成这项工作,我就会遇到更多问题,但是就目前而言,我只是希望它能正常工作!更新: 当我调整for语句以简单地for item in data:    print item我得到的是...“问题”-所以我在做一些更基本的错误。这是我的json:{"issues":[{"gravatar_id":"44230311a3dcd684b6c5f81bf2ec9f60","position":2.0,"number":263,"votes":0,"created_at":"2010/09/17 16:06:50 -0700","comments":11,"body":"Add missing paging (Older>>) links...当我打印时data,看起来好像真的很奇怪:{u'issues': [{u'body': u'Add missing paging (Older>>) lin...
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

item在您的代码中很可能是字符串;字符串索引是方括号中的那些,例如gravatar_id。因此,我首先检查您的data变量以查看您在那里收到的内容;我猜这data是一个字符串列表(或至少一个包含至少一个字符串的列表),而它应该是字典列表。


查看完整回答
反对 回复 2019-09-21
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

该变量item是一个字符串。索引如下所示:


>>> mystring = 'helloworld'

>>> print mystring[0]

'h'

上面的示例使用0字符串的索引来引用第一个字符。


字符串不能具有字符串索引(就像字典一样)。所以这行不通:


>>> mystring = 'helloworld'

>>> print mystring['stringindex']

TypeError: string indices must be integers


查看完整回答
反对 回复 2019-09-21
?
白衣非少年

TA贡献1155条经验 获得超0个赞

data是一个dict对象。因此,像这样迭代它:


Python 2

for key, value in data.iteritems():

    print key, value

Python 3

for key, value in data.items():

    print(key, value)


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 1391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信