Guan_yiqiang 2024-12-18 14:51 采纳率: 42.9%
浏览 94
已结题

读取json文本时出现string indices must be integers, not 'str'报错

我在读取txt文件的第一行时,想要读取文件中第一行的'name'和'volume',由于文件不是json格式,我便把文件转换为了json格式的文件,然后再次读取第一行时,并没有报错,于是我便以为我可以顺利索取json格式下的'name'值和'volume'值了,然而,仍然出现报错,之后通过检查发现,需要索引列表中的切片才能索引json文本中的值,但是我想通过索引json文本中的‘键’,来索引相应的值,但是我不知道接下来该怎么改进,友友们可以帮助看一下吗?谢谢!

#读取txt文件中的字典

import json
file=open('C:\\Users\\mi\\PycharmProjects\\profiles\\UD\\sigma3\\AAAQKTZKLRYKHR-UHFFFAOYSA-N.sigma','r')
first_line=file.readline()  #读取文件中的第一行
First_line=json.dumps(first_line)
dic=json.loads(First_line)
print(dic)


运行结果并没有报错

img

然而加上['name']索引时,出现了报错

#读取txt文件中的字典

import json
file=open('C:\\Users\\mi\\PycharmProjects\\profiles\\UD\\sigma3\\AAAQKTZKLRYKHR-UHFFFAOYSA-N.sigma','r')
first_line=file.readline()  #读取文件中的第一行
First_line=json.dumps(first_line)
dic=json.loads(First_line)
print(dic['name'])


插入dic['name']后出现了报错,报错应该是指需要通过列表切片来索引,但是我想通过json的'键'来索引我想要的值

img

  • 写回答

1条回答 默认 最新

  • 九月镇灵将 2024-12-18 17:06
    关注

    按你的代码得到的最终得到的dic是字符串,不是字典,所以报错了,下面是我的复现结果

    img


    你不应该先进行json.dumps,这样它会进行一次json压缩了,必须要两次loads才能转成字典
    所以把dumps去掉就行

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月18日