Форум сайта python.su
0
всем привет, подскажите, пожалуйста. мне нужно пропарсить xml документ, я открываю докс пайтон орг, смотрю страничку xml.etree.ElementTree и вроде всё просто, есть кусок кода, бери да делай
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
я ввожу первую строку, вторую и интерпретатор выдает мне ошибку
Traceback (most recent call last):
File “D:\Users\�����\Miniconda3\lib\site-packages\IPython\core\interactiveshell.py”, line 3066, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File “<ipython-input-3-08e39a478024>”, line 1, in <module>
tree = ET.parse('BarterList.xml')
File “D:\Users\�����\Miniconda3\lib\xml\etree\ElementTree.py”, line 1187, in parse
tree.parse(source, parser)
File “D:\Users\�����\Miniconda3\lib\xml\etree\ElementTree.py”, line 598, in parse
self._root = parser._parse_whole(source)
File “<string>”, line None
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1747, column 45
тут у меня ступор
Офлайн
72
IrisДокумент имеет неправильную структуру, невалидный xml. Документ country_data.xml покажте
ParseError: not well-formed (invalid token)
Офлайн
0
вот этот пытаюсь прочитать.
читаю я его конечно строкой tree = ET.parse('BarterList.xml')
Прикреплённый файлы:
BarterList.xml (237,0 KБ)
Офлайн
857
Надо всё поместить в главный (корневой) узел. По спецификации XML в документе может быть только один узел, а в нём все остальные.
Отредактировано py.user.next (Апрель 18, 2016 15:13:54)
Офлайн
0
py.user.nextСпасибо!
Надо всё поместить в главный (корневой) узел. По спецификации XML в документе может быть только один узел, а в нём все остальные.
Офлайн
857
IrisНет.
а есть смысл решать задачу через pyparsing?
IrisС ним придётся писать с нуля всё то, что уже находится внутри модулей для разбора xml.
или с ним тоже всё придется к одному узлу приводить?
Отредактировано py.user.next (Апрель 18, 2016 16:15:08)
Офлайн
72
Отсутсвие корневого тега то не проблема, делаем временный файл, пишем туда открывающий фейковый корневой тег, пишем исходый файл, пишем закрывающий корневой тег, парсим временный файл, удаляем временный файл. Но у вас все еще хуже. XML не допускает вложенные комментарии, а этом файле их куча.
➜ ~ xmlstarlet val -e BarterList.xml
BarterList.xml:1747.44: Comment not terminated
<!-- <LostItemType>107</LostItemType><!
<!-- <LostItemType>107</LostItemType><!-- Костюм пачка --> -->
^
BarterList.xml - invalid
Офлайн
0
Спасибо большое)) начала просто работать с другим файлом, там всё ок)
Офлайн
-1
I appreciate the inclusion of diverse perspectives, as it enriches the article and demonstrates Pokerogue a commitment to presenting a well-rounded view of the topic.
Офлайн
-1
Привет! Ошибка, с которой ты столкнулся, указывает на неверный формат XML. Проверь, нет ли опечаток или неожиданных символов в строке 1747. Для отвлечения можешь поиграть в Papa's pizzeria — это отличный способ отдохнуть и отвлечься от кода. Если нужны дополнительные советы по парсингу, просто спрашивай!
Офлайн