#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
вы можете попробовать это.