Форум сайта python.su
Доброго времени суток.
Есть у меня замечательный следующий код
import xml.etree.cElementTree as ET if __name__ == "__main__": tree = ET.parse('C:/ForTests/123.xml', ET.XMLParser(encoding='utf-8')) root = tree.getroot() for child in root: for element in child: print(element.tag, ":", element.text)
Офлайн
etree.XMLParser(encoding='utf-8', recover=True)
Офлайн
FishHook
import xml.etree.ElementTree as ET if __name__ == "__main__": tree = ET.parse('C:/ForTests/123.xml', parser=ET.XMLParser(encoding='utf-8', recover=True)) root = tree.getroot() for child in root: for element in child: print(element.tag, ":", element.text)
Офлайн
Chrome7
Это я видимо с библиотекой lxml перепутал.
Собственно, покажите ваш xml-файл.
Отредактировано FishHook (Апрель 4, 2019 19:04:02)
Офлайн
Chrome7Очевидно не парсить невалидные xml файлы. Т.е. бейте тех кто такие файлы сделал.
Ну или как это исправить?
Офлайн
FishHookКак заметил doza_and, в моем действительно невалидные xml, проверять их нечего.
Chrome7Это я видимо с библиотекой lxml перепутал.Собственно, покажите ваш xml-файл.
doza_andМеня посадят за массовые избиения. И на билеты по разным городам я потрачусь очень сильно.
with open("file_path") as file: for line in file: line = line.replace('&', ' and ')
Офлайн
Chrome7Не, это неправильно.
И если в случае апперсанда, это должно выглядеть как-то так
<elem>&</elem>
Отредактировано py.user.next (Апрель 5, 2019 12:51:22)
Офлайн
Chrome7Ну вы помягче. Отправьте поставщикам файлов сообщение что у них невалидные файлы, дайте ссылку на сайт валидатор, чтобы они могли сами проверить что вам выдают. Напишите что не будете обрабатывать такие файлы….
Меня посадят за массовые избиения.
Офлайн
doza_andСпасибо за помощь.
with open(inputfile, 'r', encoding='utf-8') as file: for line in file: line = line.replace('&', ' and ') text.append(line)
py.user.nextзамечал, что это не корректный способ, но в моем случае он отработал идеально.
Офлайн
Chrome7Завтра тебе пришлют новый документ, в котором будет смесь из амперсандов и сущностей - и твой сегодняшний код сломает завтрашний документ, повредив сущности.
замечал, что это не корректный способ, но в моем случае он отработал идеально.
Chrome7Во-первых, у него слишком короткое регулярное выражение, так как сущностей в XML может быть больше.
Подробнее о том, как это корректно сделать можно прочитать здесь:
All permitted Unicode characters may be represented with a numeric character reference.
Отредактировано py.user.next (Апрель 8, 2019 23:29:25)
Офлайн