xmltodict错误

时间:2016-04-01 12:52:48

标签: python xml xmltodict

编辑: 我可以打印rev ['贡献者']一段时间但是每次尝试访问rev ['贡献者']都会返回以下内容

 TypeError: string indices must be integers

原始邮寄: 我尝试使用xml从xml中提取数据来使用代码进行dict:

import xmltodict, json

with open('Sockpuppet_articles.xml', encoding='utf-8') as xml_file:
    dic_xml = xmltodict.parse(xml_file.read(), xml_attribs=False)
    print("parsed")
    for page in dic_xml['mediawiki']['page']:
        for rev in  page['revision']:
            for user in open("Sockpuppet_names.txt", "r", encoding='utf-8'):
                user = user.strip()

                if 'username' in rev['contributor'] and rev['contributor']['username'] == user:
                    dosomething()

我在if语句的最后一行收到此错误:

TypeError: string indices must be integers

奇怪的是,它适用于另一个xml文件。

1 个答案:

答案 0 :(得分:1)

当下一级只有一个元素时,我会遇到相同的错误。

...

            if len(xml_inBook["CHAPTER"]) == 2:
                xml_chapter = list(xml_inBook["CHAPTER"].items())
                cnumber = xml_chapter[0][1]
                for xml_verse in xml_chapter[1][1]:
                    vnumber = xml_verse["@vnumber"]
                    vtext = xml_verse["#text"]
...

当书是“ Obadiah”时发生错误。只有一章。

xml_inBook

点击“章节”值,我们将看到以下视图。然后假设xml_chapter相同。仅当该书有一个以上的章节时,才是正确的: enter image description here

但是循环返回“ @cnumber”而不是OrderedDict。

我解决了在只有一章的情况下将OrderedDict转换为List的问题。

plot_grid()

我正在使用Python 3,6。