Заменить специфицированное c XML значение атрибута - PullRequest
0 голосов
/ 07 мая 2020

Я посмотрел на inte rnet, но не смог найти рабочего ответа на свой вопрос. Мне нужно заменить значение атрибута файла XML, если оно равно size="10.439" to size="10.238". По сути, мне нужно изменить это число во всем файле XML. Итак, код:

import lxml.etree as etree
import re
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse('fe3.xml', parser)
re.sub(r'size="10.439"','size="10.238"', tree)

Но это не сработает, что мне нужно сделать, чтобы он заработал?

Если это помогает, атрибут размера находится в теге text из XML. Как это:

<pages>
<page>
<textbox>
<text size = "10.439"> hello
</text>
</textbox>
</page>
</pages>

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Мое грязное решение:

tree = etree.parse('fe3.xml', parser)
tree = etree.tostring(tree).replace(b'size="10.439"', b'size="10.238"')
0 голосов
/ 13 мая 2020

Я снова здесь :)

from simplified_scrapy import SimplifiedDoc,req,utils
html = '''
<pages>
<page>
<textbox>
<text size = "10.439"> hello
</text>
</textbox>
</page>
</pages>
'''
doc = SimplifiedDoc(html)
text = doc.select('text')
if text.size=='10.439':
  text.setAttr('size','10.238')
print (doc.html)

Результат:

<pages>
<page>
<textbox>
<text size="10.238"> hello
</text>
</textbox>
</page>
...