编辑: 我可以打印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文件。
答案 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_chapter相同。仅当该书有一个以上的章节时,才是正确的:
但是循环返回“ @cnumber”而不是OrderedDict。
我解决了在只有一章的情况下将OrderedDict转换为List的问题。
plot_grid()
我正在使用Python 3,6。