Проблемы с Python xml-парсером - PullRequest
0 голосов
/ 19 декабря 2018

Простой код не работает и мне нужна помощь.

df имеет 44000 строк, подобных этой

<chat>
 <messages>
 <chat-message>
 <timestamp>2017-08-22T15:08:35.906-04:00</timestamp> 
  <name /> 
  <body>Hello Mikey, I see you want to chat with us today about: Account    
  Assistance. If you are chatting on a mobile device or tablet, your session 
  will end if you navigate away from the chat window. A representative will be 
  with you momentarily.</body> 
  <usertype>system</usertype> 
  </chat-message>
  <chat-message>

, которые представляют собой несколько тегов со своими собственными тегами.Я хочу захватить все блоки тела и объединить их в одну запись.

def msgg(row):
    root = ET.fromstring(row)
    work = ""
    for body in root.findall('messages/chat-message/body'):
        work = work + body.text
        return work


for row in df5['chat']:
    try:
       df5['test'] = df5['chat'].apply(msgg)

    except:
        pass

У моей функции есть обработчик исключений, потому что без него я получаю эту ошибку:

    ParseError: no element found: line 1, column 32759

Интернет сказалэта ошибка возникает, когда в XML-файле есть неверные теги.С обработчиком исключений я не получаю ошибок, но код работает вечно;он работает 35 минут сейчас;Я уверен, что когда я наконец получу результаты, они станут мусором.Помогите!

1 Ответ

0 голосов
/ 19 декабря 2018

Скорее всего проблемы с вашими тегами.Это означает, что ваш набор данных не является чистым, и есть теги, которые не закрыты должным образом, такие как

<name> stuff here <name /> 

Вместо него должно быть

<name> stuff here </name>

РЕДАКТИРОВАТЬ: Я создал вопрос , чтобы помочь решить проблему замены строки, чтобы исправить этот плохо сформированный XML-документ.Надеюсь, это поможет вам решить вашу проблему.

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