Форум сайта python.su
Подскажите, пожалуйста, как быть, при выполнении функции remove выходит ошибка,которую никак не удается победить:
ValueError: list.remove(x): x not in list
#!/python # -*- coding: utf-8 -*- import os import glob import csv import xml.etree.ElementTree as xml csvdata = 'Список запчастей.csv' tag = 'zapchast' zapchasty_list = [] # сохраняем запчасти в список with open(csvdata,'r',newline='') as csvfile: zplist = csv.reader(csvfile,delimiter=';') for row in zplist: zapchasty_list.append(row[0]) xmlfiles = glob.glob("*.xml") for xmlfile in xmlfiles: tree = xml.parse(xmlfile) root = tree.getroot() for obj in root.findall('.//Zapchast'): zpch = obj.get('InvNumber') if zpch in zapchasty_list: root.remove(obj)
Офлайн
worsvchЭто поиск на любой глубине, тогда как root.remove() будет искать только среди прямых потомков.'.//Zapchast'
Отредактировано py.user.next (Ноя. 15, 2014 01:16:31)
Офлайн
py.user.next1. Корневой узел выходит верно
Офлайн
>>> import xml.etree.ElementTree as ET >>> >>> doc = ET.fromstring('<a><b><c></c></b></a>') >>> doc <Element 'a' at 0xb73c0dec> >>> list(doc) [<Element 'b' at 0xb73ea16c>] >>> list(doc[0]) [<Element 'c' at 0xb73de694>] >>> >>> c = doc[0][0] >>> c <Element 'c' at 0xb73de194> >>> doc.remove(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list >>>
Отредактировано py.user.next (Ноя. 16, 2014 03:25:19)
Офлайн