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