Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 4, 2015 15:50:25

widg
Зарегистрирован: 2013-05-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь по XML

Требуется из списка по значению атрибута в 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 равен числу из списка по записать его в другой файл

Помогите, как это сделать?

Офлайн

#2 Дек. 4, 2015 21:16:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Помощь по XML

widg
Помогите, как это сделать?
Что именно?
widg
Есть список:
см open, read
widg
Есть XML:
Попросить чтобы не давали данные в дерьмовом формате. Если не получится см lxml или xml.etree
widg
сли атрибут N_ZAP равен числу из списка
См set
widg
записать его в другой файл
Сначала формат записи выберите.



Офлайн

#3 Дек. 5, 2015 03:05:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь по XML

>>> 
>>> 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)

Офлайн

#4 Дек. 5, 2015 10:37:03

widg
Зарегистрирован: 2013-05-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь по XML

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

как по ним удалить из второго?

Офлайн

#5 Дек. 5, 2015 11:42:11

widg
Зарегистрирован: 2013-05-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь по XML

не пойму как проверить

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')

Офлайн

#6 Дек. 5, 2015 13:15:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь по XML

Приложи входные файлы и выходной файл, который должен получиться из входных.



Офлайн

#7 Дек. 5, 2015 13:57:21

widg
Зарегистрирован: 2013-05-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь по XML

я слил 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”/>

Офлайн

#8 Дек. 5, 2015 14:25:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь по XML

1)
Возьми xml-файлы и присоедини к сообщению, не надо текст копировать, видишь кавычки заменяются.
2)
Это не xml-документы. В xml-документе есть только один корневой узел, а сверху строка с декларацией версии xml.

Исправь и присоедини файлы.



Офлайн

#9 Дек. 5, 2015 14:47:09

widg
Зарегистрирован: 2013-05-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь по XML

присоеденил

Прикреплённый файлы:
attachment LM810225T81_150935forum.XML (785 байт)

Офлайн

#10 Дек. 6, 2015 00:47:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь по XML

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version