我有一些带有标签的XML文件。当我想从XML文件中追加关键字时,我无法使用相同的结构来追加关键字。关键字是列表,因此我需要一个列表列表来附加它们。当我尝试字典方法时,我只为每个ID索引一个标签,而不是整个列表。
我试图用元组和zip来做到这一点,但实现了相同的结果,每个id一个标签。
这是用于检索关键字的基本代码。
keywords = [[] for i in range (4)]
for infil in glob.glob( os.path.join(path, '*.xml') ):
tree = et.parse(infil)
root = tree.getroot()
for keyword in root.find(".//keywords"):
if keyword.text is not None:
keywords.append(keyword.text)
我希望有这样的输出,但是我只有一个列表,没有列表列表。
{'symbol': ['CEDAW/SP/1998/1',
'CEDAW/SP/1998/2',
'CEDAW/SP/1998/3',
'CEDAW/SP/1998/4'],
'jobno': ['N9801528', 'N9802769', 'N9801085', 'N9812464'],
'dat': ['19980121', '19980206', '19980111', '19980501'],
'language': ['English', 'English', 'English', 'English'],
'keywords': [(['AGENDA'],
["WOMEN'S STATUS",
'TREATIES',
'SIGNATURES, ACCESSIONS, RATIFICATIONS',
'RESERVATIONS AND DECLARATIONS',
'GENDER DISCRIMINATION'],
['ELECTION OF MEMBERS', 'BIOGRAPHY'],
["WOMEN'S RIGHTS", "WOMEN'S STATUS", 'PERIODIC REPORTS'])]}
答案 0 :(得分:1)
似乎您只是在指定要附加的顶级列表。因此,当您执行[[], [], [], []].append(1)
时,您将得到[[], [], [], [], 1]
。
您需要指定内部列表,例如list[i].append(keyword.text)
,因此您将需要以某种方式获取索引。
# make it scalable so it will work even if you add more XML files
paths = glob.glob( os.path.join(path, '*.xml') )
keywords = [[] for i in range(len(paths))
for i in range(len(paths)):
tree = et.parse(paths[i])
root = tree.getroot()
for keyword in root.find(".//keywords"):
if keyword.text is not None:
keywords[i].append(keyword.text) # change is here