Удаление элемента, но не текста после негоPython

Программы на Python
Ответить
Anonymous
 Удаление элемента, но не текста после него

Сообщение Anonymous »

У меня есть файл XML, похожий на этот:

Код: Выделить всё

Some bad[/b] text [i]that[/i] I [u]do [i]not[/i][/u] want to keep.

Я хочу удалить весь текст в элементах или (и их потомках) и напечатать остальной текст. Вот что я пробовал:

Код: Выделить всё

from __future__ import print_function
import xml.etree.ElementTree as ET

tree = ET.parse('a.xml')
root = tree.getroot()

parent_map = {c:p for p in root.iter() for c in p}

for item in root.findall('.//b'):
parent_map[item].remove(item)
for item in root.findall('.//u'):
parent_map[item].remove(item)
print(''.join(root.itertext()).strip())
(Я использовал рецепт из этого ответа для создания родительской_карты). Проблема, конечно, в том, что с помощью команды remove(item) я также удаляю текст после элемента, и результат такой:

Код: Выделить всё

Some that I
тогда как я хочу:

Код: Выделить всё

Some  text that I  want to keep.
Есть ли решение?

Подробнее здесь: https://stackoverflow.com/questions/229 ... t-after-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»