Форум сайта python.su
0
Требуется из списка по значению атрибута в XML выбрать значения и записать их в другой фаил.
Есть список:
339
338
333
330
329
328
Есть XML:
<ZAP N_ZAP=“339” PR_NOV=“1”>
</ZAP>
<ZAP N_ZAP=“123” PR_NOV=“1”>
</ZAP>
если атрибут N_ZAP равен числу из списка по записать его в другой файл
Помогите, как это сделать?
Офлайн
253
widgЧто именно?
Помогите, как это сделать?
widgсм open, read
Есть список:
widgПопросить чтобы не давали данные в дерьмовом формате. Если не получится см lxml или xml.etree
Есть XML:
widgСм set
сли атрибут N_ZAP равен числу из списка
widgСначала формат записи выберите.
записать его в другой файл
Офлайн
857
>>> >>> import xml.etree.ElementTree as ET >>> >>> text=""" ... <ZAP N_ZAP="339" PR_NOV="1"> ... </ZAP> ... <ZAP N_ZAP="123" PR_NOV="1"> ... </ZAP> ... <ZAP N_ZAP="328" PR_NOV="1"> ... </ZAP> ... """ >>> >>> text = '<root>' + text + '</root>' >>> doc = ET.fromstring(text) >>> >>> lst = [339, ... 338, ... 333, ... 330, ... 329, ... 328] >>> >>> nodes = [i for i in doc if int(i.attrib.get('N_ZAP')) in lst] >>> >>> tree = ET.Element('root') >>> tree.extend(nodes) >>> >>> out = ET.tostring(tree, encoding='unicode') >>> print(out) <root><ZAP N_ZAP="339" PR_NOV="1"> </ZAP> <ZAP N_ZAP="328" PR_NOV="1"> </ZAP> </root> >>>
Отредактировано py.user.next (Дек. 5, 2015 03:06:46)
Офлайн
0
py.user.next
спасибо огромное, эту часть работы сделал
задача посложнее, теперь надо удалить дубли
есть 2 файла XML
пример:
<PERS FAM=“1” IM=“2” OT=“3” W=“1” DOCTYPE=“14” DOCSER=“67 01” DOCNUM=“123” ID_PAC=“36a8840d-e8a8-11e4-a6fd-00155d11dc00” COMENTP=“” DR=“1948-08-23”/>
<PERS FAM=“4” IM=“5” OT=“6” W=“2” DOCTYPE=“14” DOCSER=“80 10” DOCNUM=“123” ID_PAC=“bf13f50f-b919-11e1-8a88-00155d11dc00” COMENTP=“” DR=“1989-05-02”/>
<PERS FAM=“7” IM=“8” OT=“9” W=“2” DOCTYPE=“14” DOCSER=“52 07” DOCNUM=“123” ID_PAC=“ccc74951-0605-11e2-8845-00155d11dc00” COMENTP=“” DR=“1984-06-27”/>
нужно по ID_PAC из одного файла удалить в другом
я научился вывести все ID_PAC:
from xml.dom import minidom doc = minidom.parse("LM810225T81_150935.XML") staffs = doc.getElementsByTagName("PERS") for staff in staffs: id_pac = staff.getAttribute("ID_PAC") print id_pac
Офлайн
0
не пойму как проверить
from xml.etree.ElementTree import ElementTree # тут у меня все ID_PAC lst = [line.rstrip('\n') for line in open('l.txt')] tree = ElementTree() tree.parse('in.xml') foos = tree.findall('PERS') for foo in foos: bars = foo.attrib.get('ID_PAC') for bar in bars: if как проверить по совпадению???? из l.txt foo.remove(bar) tree.write('out.xml')
Офлайн
857
Приложи входные файлы и выходной файл, который должен получиться из входных.
Офлайн
0
я слил 2 файла их структура такая:
<PERS FAM=“1” IM=“2” OT=“3” W=“1” DOCTYPE=“14” DOCSER=“67 01” DOCNUM=“123” ID_PAC=“36a8840d-e8a8-11e4-a6fd-00155d11dc00” COMENTP=“” DR=“1948-08-23”/>
<PERS FAM=“4” IM=“5” OT=“6” W=“2” DOCTYPE=“14” DOCSER=“80 10” DOCNUM=“123” ID_PAC=“bf13f50f-b919-11e1-8a88-00155d11dc00” COMENTP=“” DR=“1989-05-02”/>
<PERS FAM=“7” IM=“8” OT=“9” W=“2” DOCTYPE=“14” DOCSER=“52 07” DOCNUM=“123” ID_PAC=“ccc74951-0605-11e2-8845-00155d11dc00” COMENTP=“” DR=“1984-06-27”/>
<PERS FAM=“4” IM=“5” OT=“6” W=“2” DOCTYPE=“14” DOCSER=“80 10” DOCNUM=“123” ID_PAC=“bf13f50f-b919-11e1-8a88-00155d11dc00” COMENTP=“” DR=“1989-05-02”/>
из первого файла я взял все ID_PAC пример:
ccc74951-0605-11e2-8845-00155d11dc00
bf13f50f-b919-11e1-8a88-00155d11dc00
и записал их в файлик l.txt
на выходе я должен получить фаил без дублей:
<PERS FAM=“1” IM=“2” OT=“3” W=“1” DOCTYPE=“14” DOCSER=“67 01” DOCNUM=“123” ID_PAC=“36a8840d-e8a8-11e4-a6fd-00155d11dc00” COMENTP=“” DR=“1948-08-23”/>
<PERS FAM=“4” IM=“5” OT=“6” W=“2” DOCTYPE=“14” DOCSER=“80 10” DOCNUM=“123” ID_PAC=“bf13f50f-b919-11e1-8a88-00155d11dc00” COMENTP=“” DR=“1989-05-02”/>
<PERS FAM=“7” IM=“8” OT=“9” W=“2” DOCTYPE=“14” DOCSER=“52 07” DOCNUM=“123” ID_PAC=“ccc74951-0605-11e2-8845-00155d11dc00” COMENTP=“” DR=“1984-06-27”/>
Офлайн
857
1)
Возьми xml-файлы и присоедини к сообщению, не надо текст копировать, видишь кавычки заменяются.
2)
Это не xml-документы. В xml-документе есть только один корневой узел, а сверху строка с декларацией версии xml.
Исправь и присоедини файлы.
Офлайн
0
присоеденил
Прикреплённый файлы:
LM810225T81_150935forum.XML (785 байт)
Офлайн
857
widg
задача посложнее, теперь надо удалить дубли
widg
есть 2 файла XML
widg
нужно по ID_PAC из одного файла удалить в другом
widg
я слил 2 файла их структура такая:
widg
из первого файла я взял все ID_PAC пример:
widg
и записал их в файлик l.txt
widgЕсть два xml-файла, нужно из первого файла удалить узлы, которые есть во втором файле.
на выходе я должен получить фаил без дублей:
widgТак, а остальные файлы где? Ещё два файла должно быть.
присоеденил
Отредактировано py.user.next (Дек. 6, 2015 00:48:24)
Офлайн