Python TypeError:列表索引必须是整数,而不是json数据的str

Python TypeError:列表索引必须是整数,而不是json数据的str,python,json,json2html,Python,Json,Json2html,整个代码意味着扫描所有json文件300+并将json转换为html 但是有些书名有一些特殊的字符,我先把它们替换掉 但是 我试过: 但还是有错误 尝试: 仍有错误: Json: 示例json文件: 您不需要在json中迭代,因为它是一个对象: data = json.load(fi) data["title"] = re.sub("[|\^&+\-%*?/=!>]", "-", data["title&q

整个代码意味着扫描所有json文件300+并将json转换为html

但是有些书名有一些特殊的字符,我先把它们替换掉

但是

我试过:

但还是有错误

尝试:

仍有错误:

Json:

示例json文件:

您不需要在json中迭代,因为它是一个对象:

data = json.load(fi)   
data["title"] = re.sub("[|\^&+\-%*?/=!>]", "-", data["title"]) 

将错误的完整回溯显示为问题中格式正确的文本。@MichaelButscher好的,我已更新。请查收。谢谢大家!@Kanglando d是一个列表,而不是一本字典。为了确保你做的是正确的事情,只需做printtyped,看看d的类型是什么。在这一行之后做:对于a中的d:@iliya printtyped->?您也可以使用printd来查看您在d中得到了什么-也许这将有助于理解什么是错误的。谢谢!我以前试过这个。仍然是相同的错误。它适用于您发布的json,请尝试发布您收到错误的json。谢谢!!!真奇怪。如果问题解决了,请将答案标记为已接受,否则在问题中发布新问题/json。然后发布给出错误的json。
import json
import re
from glob import glob

for file_name in glob("*.json"):
    fi = open(file_name, 'r')
    data = json.load(fi)   
    
    for a in data.values():
        for d in a:
            d["title"] = re.sub("[|\^&+\-%*?/=!>]", "-", d["title"]) 

    fo = open(data["title"] + ".html", 'w')
    fo.write(str(data["body_html"]))
    fi.close()
    fo.close()
   for a in data:
        a["title"] = re.sub("[|\^&+\-%*?/=!>]", "-", a["title"]) 
 dataTitle = data[0]["title"]
 dataTitle = re.sub("[|\^&+\-%*?/=!>]", "-", dataTitle ) 

 fo = open(dataTitle + ".html", 'w')
 Traceback (most recent call last):
      File ".\json2html.py", line 28, in <module>
        dataTitle = data[0]["title"]
    KeyError: 0
{
  "body_html": "<div><head></head><body><div class=\"lake-content-editor-core lake-engine lake-typography-traditional\" data-lake-element=....</a></div></div></body></div>",
  "slug": 6643849,
  "title": "idea/project?task->things<-tools%"
}
data = json.load(fi)   
data["title"] = re.sub("[|\^&+\-%*?/=!>]", "-", data["title"])