ParserError: неправильно сформирован (неверный токен): - PullRequest
0 голосов
/ 09 января 2019

У меня большой XML-файл (> 1,5 ГБ), похожий на этот:

<?xml version="1.0" encoding="utf-8"?>
<events version="1.0">
    <event time="0.0" type="actend" person="94324001" link="119380" actType="home_94200.0"  />
    <event time="0.0" type="departure" person="94324001" link="119380" legMode="bicycle"  />
    <event time="0.0" type="actend" person="93120501" link="116274" actType="home_94800.0"  />
    <event time="0.0" type="departure" person="93120501" link="116274" legMode="bicycle"  />
    <event time="0.0" type="actend" person="84637601" link="72152" actType="home_90600.0"  />
    <event time="0.0" type="departure" person="84637601" link="72152" legMode="ride"  />
    <event time="0.0" type="actend" person="78914201" link="49600" actType="home_91800.0"  />
    <event time="0.0" type="departure" person="78914201" link="49600" legMode="access_walk"  />
    <event time="0.0" type="actend" person="74265301" link="48593" actType="home_96000.0"  />
    ....
</events>

Когда я пытаюсь разобрать его с помощью следующего кода:

import xml.etree.ElementTree as ET
import gzip
# Parsing Event XML and saving in a list
def gzipedXMLparser(filename):

    vehicleIDs = []
    data = gzip.open(filename, mode="rb")

    datatoparse = ET.iterparse(filename, events = ("start", "end"), parser = ET.XMLParser(encoding = 'utf-8'))
    datatoparse = iter(datatoparse)
    event, root = datatoparse.__next__()

    for event, elem in datatoparse:
        if event == "end" and elem.tag == "event":
            if elem.attrib["type"] == "vehicle enters traffic":
                if elem.attrib["vehicle"] in vehicleIDs:
                    pass
                else:
                    vehicleIDs.append(elem.attrib)
            elem.clear

            root.clear()
    print(vehicleIDs)
    return vehicleIDs

Я получаю следующую ошибку:

xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0

Может кто-нибудь объяснить, в чем проблема и как ее исправить?

Проблема была в файле XML, где-то ошибка, я скачал его снова (из другого места), и он работал просто отлично.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Проблема была в файле xml, где-то есть ошибка, я скачал его снова (из другого места), и он работал просто отлично.

0 голосов
/ 09 января 2019

Кажется, что ваш XML может содержать недопустимые символы. В любом случае вы можете проверить ParseError: не правильно сформирован (неверный токен), используя cElementTree

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...