Использование Python для поиска и изменения атрибута в файле XML

1

Я пытался выяснить, как изменить цену на завод "Греческий Валериан", используя процентное изменение и в диапазоне -90 < percentChange < 100.

Я могу найти и вручную изменить имена и номера, я просто не могу понять, как использовать процентное изменение, и использую редакцию сообщества Py Charm. Файл outputt.xml в моем коде - это второй файл, на который я пишу свои изменения.

Мой XML-фрагмент:

<PLANT>    
    <COMMON>Greek Valerian</COMMON>    
    <BOTANICAL>Polemonium caeruleum</BOTANICAL>    
    <ZONE>Annual</ZONE>
    <LIGHT>Shade</LIGHT>    
    <PRICE>4.36</PRICE>    
    <AVAILABILITY>071499</AVAILABILITY>    
</PLANT>
<PLANT>    
    <COMMON>California Poppy</COMMON>    
    <BOTANICAL>Eschscholzia californica</BOTANICAL>
    <ZONE>Annual</ZONE>    
    <LIGHT>Sun</LIGHT>   
    <PRICE>7.89</PRICE>    
    <AVAILABILITY>032799</AVAILABILITY>
</PLANT>

Код Python3, который я получил до сих пор:

import xml.etree.ElementTree as ET

with open('plant_catalog.xml', encoding='latin-1') as f:
  tree = ET.parse(f)
  root = tree.getroot()

  for elem in root.getiterator():
    try:
      elem.text = elem.text.replace('4.36', '5')
    except AttributeError:
      pass    
tree.write('outputt.xml', encoding='latin-1')

Может ли кто-нибудь помочь мне решить это?

Теги:
parsing

1 ответ

0

Просто измените цену на

current_price*(1+percentChange/100)

Сначала найдите завод, который вас интересует:

for plant in root.iter('COMMON'):
    if plant.text!='Greek Valerian':
        continue
    else:
        price = None
        for i in range(4):
            price = plant.getnext()
        price.text = str(float(price.text)*(1+percentChange/100))
  • 0
    Спасибо, я бы просто хотел заменить строку elem.text = elem.text.replace ('4.36', '5') на эту?
  • 0
    Спасибо, и я заменил свой старый для утверждения новым для утверждения и все еще получаю ошибку
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню