ElementTree и FB2: ParseError в файлах cp1251 - Python

Узнай цену своей работы

Формулировка задачи:

Занялся я тут на досуге парсингом fb2-книг. Использую Python 3x, компонент xml.etree.ElementTree. Случилась у меня засада. Если файл в кодировке ANSI, то постоянно появляется ошибка ParseError. Исследование показало, что по указанным координатам в файлах находятся &-последовательности (вроде &nbsp или символ с кодом 7. Можно ли что-то с этим сделать? Очень уж не хочется заниматься еще и разного рода перекодировками файлов... Ну вот, чтобы не быть голословным, функция, которая извлекает нужные данные из файла:
Листинг программы
  1. def get_description_zip(zf, fn):
  2. """ Извлекаем 'description' из указанного (fn) файла, находящегося в архиве (zf). """
  3. try:
  4. fb = met.fromstring(zf.read(fn).decode('utf-8'))
  5. except UnicodeDecodeError:
  6. fb = met.fromstring(zf.read(fn).decode('cp1251')) # здесь все падает...
  7. else:
  8. return None
  9. ns = fb.tag[:fb.tag.index("}")+1]
  10. return fb.find(ns + 'description')
Глючный файл прилагается.

Решение задачи: «ElementTree и FB2: ParseError в файлах cp1251»

textual
Листинг программы
  1. * * * * fb = met.fromstring(zf.read(fn).decode('cp1251')) # здесь все падает...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы