附加xml文件中的列表列表

时间:2019-08-19 11:14:06

标签: python xml list indexing glob

我有一些带有标签的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'])]}

1 个答案:

答案 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