Вставка узла заменяет предыдущий узел в python

#python #xpath

#python #xpath

Вопрос:

Я хотел бы добавить несколько значений к этому узлу (если это произойдет), но когда я делаю это, productid2 заменяет productid1. Есть ли способ вернуть отдельные элементы идентификатора продукта?

            for node in tree.xpath( '//map/topicmeta' ):
                node.insert(5, othermeta)                       
                othermeta.set("name", "product-id")
                othermeta.attrib['content'] = meta_productid1

                othermeta.set("name", "product-id")
                othermeta.attrib['content'] = meta_productid2
  

Комментарии:

1. один узел может иметь только одно имя — создайте два узла

Ответ №1:

вы можете использовать list или tuple для хранения нескольких элементов:

 othermeta.attrib['content'] = []
othermeta.attrib['content'].append(meta_productid1)
othermeta.attrib['content'].append(meta_productid2)
  

или

 othermeta.attrib['content'] = [meta_productid1, meta_productid2]
othermeta.attrib['content'] = (meta_productid1, meta_productid2)
  

вы можете получить их с помощью:

 id1, id2 = othermeta.attrib['content']
  

если тип othermeta.attrib['content'] ограничен str , вы можете id1 id2 связать его с одним str и проанализировать его там, где вы используете:

Магазин:

 othermeta.attrib['content'] = ','.join([meta_productid1, meta_productid2])
  

используйте:

 id1, id2 = othermeta.attrib['content'].split(',')
  

надеюсь, у меня нет недопонимания по поводу вашего вопроса.

Комментарии:

1. Спасибо за вашу помощь. К сожалению, при этом я получаю сообщение об ошибке: аргументы должны быть байтами или юникодом, есть «список»

2. Я обновил новый метод, join и split вы можете попробовать это.